黑马程序员技术交流社区
标题:
关于张老师高新课代码问题哦
[打印本页]
作者:
小马过河
时间:
2014-1-2 23:26
标题:
关于张老师高新课代码问题哦
张老师得到的结果和我不同,明明代码一样的啊。不知道是不是版本问题。没有显示代理名称。有同学可以贴过去看看答案。
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)
复制代码
我的所有结果都没有前缀
张老师是是这样
QQ截图20140102232442.png
(71.36 KB, 下载次数: 40)
下载附件
老师是显示结果
2014-1-2 23:25 上传
希望有同学贴出我的代码结果,看看是不是版本问题哦
作者:
小马过河
时间:
2014-1-3 10:13
问题解决了,传入参数问题。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2