Java代理学习-创建动态类及查看其方法列表信息
2016-05-25 22:37
423 查看
package com.mari.proxy; import java.lang.reflect.Constructor; import java.lang.reflect.Method; import java.lang.reflect.Proxy; import java.util.List; public class ProxyTest { public static void main(String[] args) { Class<?> clazzProxy1 = Proxy.getProxyClass(List.class.getClassLoader(), List.class); System.out.println(clazzProxy1.getName()); System.out.println("------begin constructor list-------"); Constructor<?>[] constructors = clazzProxy1.getConstructors(); for (Constructor<?> constructor : constructors) { String name = constructor.getName(); StringBuilder sb = new StringBuilder(name); sb.append('('); Class<?>[] clazzParams = constructor.getParameterTypes(); for (Class<?> clazzParam : clazzParams) { sb.append(clazzParam.getClass().getName()).append(","); } if (clazzParams != null && clazzParams.length > 0) sb.deleteCharAt(sb.length() - 1); sb.append(')'); System.out.println(sb.toString()); } System.out.println("------begin method list-------"); Method[] clazzMethods = clazzProxy1.getMethods(); for (Method method : clazzMethods) { String name = method.getName(); StringBuilder sb = new StringBuilder(name); Class<?>[] clazzParams = method.getParameterTypes(); sb.append('('); for (Class<?> clazzParam : clazzParams) { sb.append(clazzParam.getClass().getName()).append(","); } if(clazzParams != null && clazzParams.length > 0) sb.deleteCharAt(sb.length() -1); sb.append(')'); System.out.println(sb.toString()); } } }
打印的信息
com.sun.proxy.$Proxy0 ------begin constructor list------- com.sun.proxy.$Proxy0(java.lang.Class) ------begin method list------- add(java.lang.Class,java.lang.Class) add(java.lang.Class) remove(java.lang.Class) remove(java.lang.Class) get(java.lang.Class) equals(java.lang.Class) toString() hashCode() indexOf(java.lang.Class) clear() contains(java.lang.Class) isEmpty() iterator() lastIndexOf(java.lang.Class) replaceAll(java.lang.Class) size() subList(java.lang.Class,java.lang.Class) toArray() toArray(java.lang.Class) spliterator() addAll(java.lang.Class,java.lang.Class) addAll(java.lang.Class) stream() forEach(java.lang.Class) set(java.lang.Class,java.lang.Class) containsAll(java.lang.Class) listIterator() listIterator(java.lang.Class) removeAll(java.lang.Class) removeIf(java.lang.Class) retainAll(java.lang.Class) sort(java.lang.Class) parallelStream() isProxyClass(java.lang.Class) getProxyClass(java.lang.Class,java.lang.Class) getInvocationHandler(java.lang.Class) newProxyInstance(java.lang.Class,java.lang.Class,java.lang.Class) wait() wait(java.lang.Class,java.lang.Class) wait(java.lang.Class) getClass() notify() notifyAll()
相关文章推荐
- 描述使用AJAX提交请求,处理响应的基本步骤。
- java中注解的使用与实例(一)
- TopCoder 客户端被 Java 安全程序拦截
- 如何检查和解决Java虚拟机内存溢出的问题?
- Java实现定时任务的三种方法(转)
- 观察者模式-JAVA
- java注释指导手册
- Java 内部类访问规则
- java 包关键字和面向对象总结
- java keytool 使用
- ubuntu安装Eclipse和创建快捷方式
- java通过字符串调用方法,java反射应用实例
- java 映射处理类方法和属性(get set)
- struts2的零配置
- Eclipse中的Maven测试插件输入字符集设置
- Java学习_修饰符
- Spring MVC入门Demo
- Java基础回顾 : 线程的实现方式
- 【Java学习-J.160525.0.19】Java 面向对象以及类与类的继承
- 第一章 JAVA入门 Framework层之Libraries