黑马程序员技术交流社区
标题:
反射类中的方法--疑问
[打印本页]
作者:
王璐
时间:
2012-6-29 20:02
标题:
反射类中的方法--疑问
本帖最后由 王璐 于 2012-6-30 10:21 编辑
反射.png
(41.76 KB, 下载次数: 73)
下载附件
2012-6-29 19:39 上传
Person p=new Person();
Class clazz=Class.forName("reflect.Person");
Method method=clazz.getMethod("aa1",String.class);
method.invoke(p,"lisi"); Person是一个外部类,反射Person中的一个方法,“Person p=new Person();”这条语句是什么意思,怎么直接创建外部类的对象了?
“method.invoke(p,"lisi"); ”,invoke()方法第一个参数怎么给它设置参数?
作者:
周朋飞
时间:
2012-6-29 21:45
之所以写这个Person p = new Person() 是因为你invoke要在这个对象身上运行它的方法,所以才这么做 ,其实完全没必要 想要获得Person的对象,完全可以通过反射实现,只要你给我一个名字就行 你可以这样做,Class clazz=Class.forName("reflect.Person"); 这是获得了Person类的字节码了,然后创建他的对象,用Object来接受
Object object = clazz.newInstance(); 然后你通过反射获得person身上的方法Method method=clazz.getMethod("aa1",String.class);
然后再person的对象上调用这个方法,method.invoke(object,"传进来的字符串参数 ");这样就通过反射获得你想要的结果了
作者:
yuxingxing1988
时间:
2012-6-29 22:16
invoke中的第一个参数是需要调用类的实例,其实可以直接通过字节码clazz.newInstance()来得到当前类的对象,可以不用new Person()
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2