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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘笑 中级黑马   /  2012-6-12 10:35  /  1321 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

最近在看关于反射的视频,有几个问题没有理解:
1。反射用来动态的检查对象和修改其字段调用方法,但是一个类A只有一个Class对象与其对应,那么当A有10个对象,怎么知道更改的是那个
2。UI设计中反射应用是否意味着MVC的各类中不需要在设置相互的对象引用,比如,View的对象中要设置M的对象,用来访问M的属性
哪位朋友知道的,请解答下

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 鼓励一下~

查看全部评分

4 个回复

倒序浏览
那个,估计没敲过代码吧,如果你敲过代码,Method类里面的invoke(Object  obj,Object... args);---是不是要指定对象才能调用对象的方法?,Field类里面的get(Object  obj)---获取字段值,是不是指定对象获取的字段值才有意义?

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 赞一个!

查看全部评分

回复 使用道具 举报
潘东升 发表于 2012-6-12 10:51
那个,估计没敲过代码吧,如果你敲过代码,Method类里面的invoke(Object  obj,Object... args);---是不是要 ...

不懂·········
回复 使用道具 举报
invoke(Object obj,Class..)其中的obj参数就是要你知名作用到哪个对象上面,而第二个是说明你要调用含有哪些类型参数的方法,
调用的方法有几个参数就写几个,希望楼主给个技术分,再急需技术分参加考试
回复 使用道具 举报
反射:可以动态的获取指定类中的成员,以及建立指定类对象。
以前操作对象的时候,用的是new关键字完成,并通过对象,对其成员进行调用。
Person p=new Person();1,先加载Person.class文件,2,对对象进行初始化
p.function():3,调用其方法。
在对象调用成员方法时:需要明确两个因素:1,对象2,参数列表。
通过字节码操作完成以上动作:
1,  加载Person.class文件,获取Person.class文件对应的class对象。
Class clazz=Class.forName(“Person”);
2.        通过字节码文件对象,对指定类进行对象创建,并初始化。
Person p=(Person)class.newInstance();其实是通过空构造函数进行初始化的。
3.通过对象调用成员
       p.function()//其实这个方法可以事先不知道
类可以作为参数进行传递,那么方法也可以一样作为参数进行传递,因为方法存在于字节码文件内,所以可以通过Class对象获取字节码文件中的内容,动态的获取方法。
       Method m=clazz.getMethod(“方法名”,参数列表类型(Class));
       m.invoke(对象,参数);
类或方法都作为参数进行传递,这样到底对于开发有哪些好处呢?
需求:设计主机,为了提高后期的扩展性,也就是说为了后期提高电脑的功能,对外提供了PCI接口,以方便电脑功能的扩展。
后期:想要进行电脑扩展,想要加入一个网卡,只需要定义一个网卡,实现PCI接口,只要覆盖这个规则,主板可以使用该板卡。

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 赞一个!

查看全部评分

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