主页 > 知识库 > 网络编程 > JSP/Java >

Java代理机制创建动态类及查看其方法列表信息

来源:中国IT实验室 作者:佚名 发表于:2013-07-05 17:37  点击:
[java] package com.pzf; import java.lang.reflect.Constructor; import java.lang.reflect.Method; import java.lang.reflect.Proxy; import java.util.Collection; /*创建动态类及查看其方法列表信息*/ public class ProxyTest { public static void main(
[java]  package com.pzf;
  import java.lang.reflect.Constructor;
  import java.lang.reflect.Method;
  import java.lang.reflect.Proxy;
  import java.util.Collection;
  /*创建动态类及查看其方法列表信息*/
  public class ProxyTest {
  public static void main(String[] args) {
  Class clazzProxy1= Proxy.getProxyClass(Collection.class.getClassLoader(), Collection.class);//参数1类加载器,2类的接口(可多个)
  System.out.println(clazzProxy1.getName());
  //2,查看类的方法
  //2.1查看构造方法
  System.out.println("----构造方法列表----");
  Constructor[] constructors=clazzProxy1.getConstructors();
  for(Constructor constructor: constructors){
  //获得构造方法的名字
  String name=constructor.getName();
  StringBuilder sb=new StringBuilder(name);
  sb.append('(');
  //查看方法的参数
  Class[] clazzParames= constructor.getParameterTypes();
  for(Class clazzParame:clazzParames){
  //取出类型名字,并且追加到StringBuilder,并且每个参数用逗号隔开
  sb.append(clazzParame.getName()).append(",");
  }
  //去掉最后逗号
  if(clazzParames!=null&&clazzParames.length!=0)
  sb.deleteCharAt(sb.length()-1);
  sb.append(')');
  System.out.println(sb.toString());
  }
  System.out.println("----方法列表----");
  Method[] methods=clazzProxy1.getMethods();
  for(Method method: methods){
  //获得构造方法的名字
  String name=method.getName();
  StringBuilder sb=new StringBuilder(name);
  sb.append('(');
  //查看方法的参数
  Class[] clazzParames= method.getParameterTypes();
  for(Class clazzParame:clazzParames){
  //取出类型名字,并且追加到StringBuilder,并且每个参数用逗号隔开
  sb.append(clazzParame.getName()).append(",");
  }
  //去掉最后逗号
  if(clazzParames!=null&&clazzParames.length!=0)
  sb.deleteCharAt(sb.length()-1);
  sb.append(')');
  System.out.println(sb.toString());
  }
  }
  }
  结果:
  $Proxy0
  ----构造方法列表----
  $Proxy0(java.lang.reflect.InvocationHandler)
  ----方法列表----
  add(java.lang.Object)
  hashCode()
  clear()
  equals(java.lang.Object)
  toString()
  contains(java.lang.Object)
  isEmpty()
  addAll(java.util.Collection)
  iterator()
  size()
  toArray([Ljava.lang.Object;)
  toArray()
  remove(java.lang.Object)
  containsAll(java.util.Collection)
  removeAll(java.util.Collection)
  retainAll(java.util.Collection)
  isProxyClass(java.lang.Class)
  getProxyClass(java.lang.ClassLoader,[Ljava.lang.Class;)
  getInvocationHandler(java.lang.Object)
  newProxyInstance(java.lang.ClassLoader,[Ljava.lang.Class;,java.lang.reflect.InvocationHandler)
  wait()
  wait(long,int)
  wait(long)
  getClass()
  notify()
  notifyAll()

    有帮助
    (0)
    0%
    没帮助
    (0)
    0%