黑马程序员技术交流社区

标题: 反射类中的方法--疑问 [打印本页]

作者: 王璐    时间: 2012-6-29 20:02
标题: 反射类中的方法--疑问
本帖最后由 王璐 于 2012-6-30 10:21 编辑




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