本帖最后由 张向辉 于 2013-2-6 15:24 编辑
- 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(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()
希望对你理解代理有所帮助 |