黑马程序员技术交流社区
标题:
关于反射中的Method方法
[打印本页]
作者:
王德云
时间:
2011-10-16 22:32
标题:
关于反射中的Method方法
前一段时间看了张老师讲的反射,没弄明白,跳过去了,今天又去看了。但看到方法的时候,有点弄不明白
如:Method mt=String.class.getMethod("charAt",int.class);
为什么要用String去点呀?
作者:
赵玉成
时间:
2011-10-16 23:47
charAt是String类的方法啊,所以用String.class获得String类的Class对象,{:soso_e129:}小兄弟,学习慢慢来啊,不要急哦
作者:
丁翔
时间:
2011-10-16 23:48
类名。class 可以得到这个类的字节码,然后再点getMethod,是得到这个字节码中表示方法的字节码段,然后()里面的就是表示2参数,这2参数前面那个就是是你要的String类中一个方法的名字,后面那个int。class就是你要调用charAt方法时,要传一个int类型的参数给这个方法。
就这样理解就差不多了吧
作者:
张强+
时间:
2011-10-16 23:50
关于java反射和Method类的问题
我现在可以用Method类得到一个类的所有方法列表
但是怎么直接执行它们呢
例如
class A{
setXXX(){}
setYYY(){}
setZZZ(){}
.........
}
class B{
A oa=new A();
......
......
}
我不知道 A中的的众set方法具体名字,但是知道他们存,在而且A中的众set方法的名字和和数量都会变动,我如何能在不更改B的代码情况下,无论A的set方法怎么变动可以调用所有set方法。
作者:
朱华
时间:
2011-10-17 13:22
纯手打,请区分。
只跟你说Method的方法可能意义不大,咱们先搞明白什么是反射。
反射是JAVA中特有的一个自己描述自己属性和方法的一个方式,利用这项技术可以将类名变为参数,在完全不知道类名的情况下,即不需要了解你要操作的是哪个类,我就先写一个通用的方法出来,以后你调用这个方法的时候,可以根据你传进来的类名的参数不同来返回不同的数据。
Method mt=String.class.getMethod("charAt",int.class);
这句中,其实正如你所说,不必须用String去点class,那个String不是必须的,String可以抽象成一个通用的写法Object,
Object.class.getMethod("你要返回的方法名",该方法的参数.class);
这里之所以写成String,只是为了拿String举一个例子而已,后面终究要变成Object来调用的吧。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2