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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王德云 金牌黑马   /  2011-10-16 22:32  /  3316 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

关于java反射和Method类的问题   
我现在可以用Method类得到一个类的所有方法列表   
但是怎么直接执行它们呢   

例如   
class   A{   
setXXX(){}   
setYYY(){}   
setZZZ(){}   
.........   
}   

class   B{   
A   oa=new   A();   
......   
......   
}   

我不知道   A中的的众set方法具体名字,但是知道他们存,在而且A中的众set方法的名字和和数量都会变动,我如何能在不更改B的代码情况下,无论A的set方法怎么变动可以调用所有set方法。

评分

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

查看全部评分

回复 使用道具 举报
前一段时间看了张老师讲的反射,没弄明白,跳过去了,今天又去看了。但看到方法的时候,有点弄不明白
如:Method mt=String.class.getMethod("charAt",int.class);
为什么要用String去点呀?

评分

参与人数 1技术分 +1 收起 理由
admin + 1 加分鼓励!

查看全部评分

4 个回复

倒序浏览
charAt是String类的方法啊,所以用String.class获得String类的Class对象,{:soso_e129:}小兄弟,学习慢慢来啊,不要急哦

评分

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

查看全部评分

回复 使用道具 举报
丁翔 黑马帝 2011-10-16 23:48:47
板凳
类名。class   可以得到这个类的字节码,然后再点getMethod,是得到这个字节码中表示方法的字节码段,然后()里面的就是表示2参数,这2参数前面那个就是是你要的String类中一个方法的名字,后面那个int。class就是你要调用charAt方法时,要传一个int类型的参数给这个方法。

就这样理解就差不多了吧

评分

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

查看全部评分

回复 使用道具 举报
朱华 黑马帝 2011-10-17 13:22:04
报纸
纯手打,请区分。
只跟你说Method的方法可能意义不大,咱们先搞明白什么是反射。
反射是JAVA中特有的一个自己描述自己属性和方法的一个方式,利用这项技术可以将类名变为参数,在完全不知道类名的情况下,即不需要了解你要操作的是哪个类,我就先写一个通用的方法出来,以后你调用这个方法的时候,可以根据你传进来的类名的参数不同来返回不同的数据。
Method mt=String.class.getMethod("charAt",int.class);
这句中,其实正如你所说,不必须用String去点class,那个String不是必须的,String可以抽象成一个通用的写法Object,
Object.class.getMethod("你要返回的方法名",该方法的参数.class);
这里之所以写成String,只是为了拿String举一个例子而已,后面终究要变成Object来调用的吧。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马