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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 尚志 中级黑马   /  2014-9-9 16:25  /  1424 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

今天看视频,Java Bean 一直没能理解透彻,既然已经给类的私有属性设置了public getX()和public setX()方法,那么另一个类要得到一个实例属性x的值,直接调用getX()方法不得了、、干嘛要先得到属性描述
PropertyDescriptor pd = new ProperDescriptor("属性名" , "类名");
然后再得到属性方法
Method   methodGetX = pd.getReadMethod();
再调用实例的属性的get方法
Object retVal = methodGetX.invoke("类名")

是不是那里理解的错误了???

6 个回复

倒序浏览
大神们呢?
回复 使用道具 举报
???????????
回复 使用道具 举报
是因为开始并不知道他有那些字段描述,JavaBean的特点就是get和set方法遵循了相应的规则,所以知道了属性描述后,就可以的到他的全部值。反射就是框架的基石。
回复 使用道具 举报
一般情况下你说的也不错,我们也是这样用的,但是有时我们基于接口编程的时候,要实例化的对象的类是不一定的,如果全部写死到代码里面,有一天突然客户想要改业务了,还要回来改代码,但是改代码之后还要重新编译,重新发布,很浪费时间的,
比如本来List<String> list=new ArrayList<String>();的突然有一天客户说他们就想换成LinkedList<String>而且是不带解释的,我们就要改程序了。
但是群众的想法是无限的,他们把想要做业务的类写在了配置文件里面,然后用反射来动态生成业务类,然后就有了上面的做法了。
其实一般情况下我们也不会这么做的,但是为了显示反射是怎么用的,就这么写出来而已,
反射一般是在面向接口编程的时候用才比较比较不鸡肋,你想想要是你知道了一类有什么方法了,你还会用反射的方法去调用那个方法吗,那不是无聊嘛。
回复 使用道具 举报
hejinzhong 发表于 2014-9-9 21:14
是因为开始并不知道他有那些字段描述,JavaBean的特点就是get和set方法遵循了相应的规则,所以知道了属性描 ...

谢谢、、
回复 使用道具 举报
尚志 中级黑马 2014-9-10 08:35:46
7#
liaorubei 发表于 2014-9-9 21:27
一般情况下你说的也不错,我们也是这样用的,但是有时我们基于接口编程的时候,要实例化的对象的类是不一定 ...

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