Java 代理类(一) 创建动态类及查看其方法列表信息

来源:互联网 发布:车贷app管理系统源码 编辑:程序博客网 时间:2024/05/16 12:33
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){//getProxyClass(),此函数形参(可传递可变参数),//第一个为加载器(通常为第二个参数的类所用的加载器),第二个为接口Class clazzProxy1 = Proxy.getProxyClass(Collection.class.getClassLoader(),Collection.class);System.out.println(clazzProxy1.getName());System.out.println();System.out.println("Begin constructors list :");//获得构造方法列表Constructor[] constructors =clazzProxy1.getConstructors();for(Constructor constructor : constructors){String name = constructor.getName();StringBuilder sBuilder = new StringBuilder(name);sBuilder.append('(');Class[] clazzParams = constructor.getParameterTypes();for(Class clazzParam : clazzParams){sBuilder.append(clazzParam.getName()).append(',');}if((clazzParams != null) && (clazzParams.length != 0)){sBuilder.deleteCharAt(sBuilder.length()-1);}sBuilder.append(')');System.out.println(sBuilder.toString());}System.out.println();System.out.println("Begin methods list :");//获得方法列表Method[] methods =clazzProxy1.getMethods();for(Method method : methods){String name = method.getName();StringBuilder sBuilder = new StringBuilder(name);sBuilder.append('(');Class[] clazzParams = method.getParameterTypes();for(Class clazzParam : clazzParams){sBuilder.append(clazzParam.getName()).append(',');}if((clazzParams != null) && (clazzParams.length != 0)){sBuilder.deleteCharAt(sBuilder.length()-1);}sBuilder.append(')');System.out.println(sBuilder.toString());}}}


运行结果截图(部分)如下:

 

 

0 0