张老师得到的结果和我不同,明明代码一样的啊。不知道是不是版本问题。没有显示代理名称。有同学可以贴过去看看答案。
- package 代理;
- 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 clazzProxy=Proxy.getProxyClass(Collection.class.getClassLoader(), Collection.class);
- //一般看到前缀为clazz的,就知道这个变量代表的是一份字节码。既然是一份字节码,那么就可以获取它的名字。
- System.out.println(clazzProxy.getName());
-
- System.out.println("begin constructor list--------------------------------");
- /*$proxy0()
- %proxy0(InvocationHandler,int)*/
- //首先我们先看看获取的这个类身上有什么构造方法
- Constructor[] constructors = clazzProxy.getConstructors();
- for(Constructor constructor:constructors){
- String name = constructor.getName();
- StringBuilder sBuilder=new StringBuilder();
- //获得参数列表
- Class[] clazzParams =constructor.getParameterTypes();
- //获取每一个
- sBuilder.append('(');
- 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("begin methods list--------------------------------");
- /*$proxy0()
- %proxy0(InvocationHandler,int)*/
- //首先我们先看看获取的这个类身上有什么构造方法
- Method[] methods = clazzProxy.getMethods();
- for(Method method:methods){
- String name = method.getName();
- StringBuilder sBuilder=new StringBuilder();
- 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());
- }
- }
- }
复制代码
我的答案是这样的- com.sun.proxy.$Proxy0
- begin constructor list--------------------------------
- (java.lang.reflect.InvocationHandler)
- begin methods list--------------------------------
- ()
- (java.lang.Object)
- ()
- (java.lang.Object)
- (java.lang.Object)
- ()
- ()
- ()
- ([Ljava.lang.Object;)
- (java.util.Collection)
- ()
- (java.lang.Object)
- ()
- (java.util.Collection)
- (java.util.Collection)
- (java.util.Collection)
- (java.lang.Class)
- (java.lang.Object)
- (java.lang.ClassLoader,[Ljava.lang.Class;)
- (java.lang.ClassLoader,[Ljava.lang.Class;,java.lang.reflect.InvocationHandler)
- ()
- ()
- ()
- (long,int)
复制代码 我的所有结果都没有前缀
张老师是是这样
希望有同学贴出我的代码结果,看看是不是版本问题哦
|