A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 小马过河 中级黑马   /  2014-1-2 23:26  /  1108 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

张老师得到的结果和我不同,明明代码一样的啊。不知道是不是版本问题。没有显示代理名称。有同学可以贴过去看看答案。

  1. package 代理;

  2. import java.lang.reflect.Constructor;
  3. import java.lang.reflect.Method;
  4. import java.lang.reflect.Proxy;
  5. import java.util.Collection;

  6. public class ProxyTest {
  7.         public static void main(String[] args) {
  8.                 Class clazzProxy=Proxy.getProxyClass(Collection.class.getClassLoader(), Collection.class);
  9.                 //一般看到前缀为clazz的,就知道这个变量代表的是一份字节码。既然是一份字节码,那么就可以获取它的名字。
  10.                 System.out.println(clazzProxy.getName());
  11.                
  12.                 System.out.println("begin constructor list--------------------------------");
  13.                 /*$proxy0()
  14.                 %proxy0(InvocationHandler,int)*/
  15.                 //首先我们先看看获取的这个类身上有什么构造方法
  16.                 Constructor[] constructors = clazzProxy.getConstructors();
  17.                 for(Constructor constructor:constructors){
  18.                         String name = constructor.getName();
  19.                         StringBuilder sBuilder=new StringBuilder();
  20.                         //获得参数列表
  21.                         Class[] clazzParams =constructor.getParameterTypes();
  22.                         //获取每一个
  23.                         sBuilder.append('(');
  24.                         for(Class clazzParam:clazzParams){
  25.                                 sBuilder.append(clazzParam.getName()).append(',');
  26.                         }
  27.                         //删除最后一个逗号
  28.                         if (clazzParams!=null &&clazzParams.length !=0 )
  29.                                 sBuilder.deleteCharAt(sBuilder.length()-1);
  30.                         sBuilder.append(')');
  31.                         System.out.println(sBuilder.toString());
  32.                 }
  33.                 System.out.println("begin methods  list--------------------------------");
  34.                 /*$proxy0()
  35.                 %proxy0(InvocationHandler,int)*/
  36.                 //首先我们先看看获取的这个类身上有什么构造方法
  37.                 Method[] methods = clazzProxy.getMethods();
  38.                 for(Method method:methods){
  39.                         String name = method.getName();
  40.                         StringBuilder sBuilder=new StringBuilder();
  41.                         sBuilder.append('(');
  42.                         //获得参数列表
  43.                         Class[] clazzParams =method.getParameterTypes();
  44.                         //获取每一个
  45.                         for(Class clazzParam:clazzParams){
  46.                                 sBuilder.append(clazzParam.getName()).append(',');
  47.                         }
  48.                         //删除最后一个逗号
  49.                         if (clazzParams!=null &&clazzParams.length !=0 ){
  50.                                 sBuilder.deleteCharAt(sBuilder.length()-1);
  51.                         }
  52.                         sBuilder.append(')');
  53.                         System.out.println(sBuilder.toString());
  54.                 }
  55.         }
  56. }
复制代码

我的答案是这样的
  1. com.sun.proxy.$Proxy0
  2. begin constructor list--------------------------------
  3. (java.lang.reflect.InvocationHandler)
  4. begin methods  list--------------------------------
  5. ()
  6. (java.lang.Object)
  7. ()
  8. (java.lang.Object)
  9. (java.lang.Object)
  10. ()
  11. ()
  12. ()
  13. ([Ljava.lang.Object;)
  14. (java.util.Collection)
  15. ()
  16. (java.lang.Object)
  17. ()
  18. (java.util.Collection)
  19. (java.util.Collection)
  20. (java.util.Collection)
  21. (java.lang.Class)
  22. (java.lang.Object)
  23. (java.lang.ClassLoader,[Ljava.lang.Class;)
  24. (java.lang.ClassLoader,[Ljava.lang.Class;,java.lang.reflect.InvocationHandler)
  25. ()
  26. ()
  27. ()
  28. (long,int)
复制代码
我的所有结果都没有前缀

张老师是是这样


希望有同学贴出我的代码结果,看看是不是版本问题哦

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

1 个回复

正序浏览
问题解决了,传入参数问题。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马