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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王璐 中级黑马   /  2012-6-29 20:02  /  1525 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 王璐 于 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()方法第一个参数怎么给它设置参数?

2 个回复

正序浏览
invoke中的第一个参数是需要调用类的实例,其实可以直接通过字节码clazz.newInstance()来得到当前类的对象,可以不用new Person()
回复 使用道具 举报
之所以写这个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,"传进来的字符串参数 ");这样就通过反射获得你想要的结果了  
   

评分

参与人数 1技术分 +1 收起 理由
刘蕴学 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马