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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 罗力 中级黑马   /  2012-10-29 14:20  /  1570 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

反射也是得到的是一个对象,问什么要用反射得到一个实例,为什么不用new呢,一直想不明白,求大虾指教!

评分

参与人数 1技术分 +1 收起 理由
韩军博 + 1 神马都是浮云

查看全部评分

3 个回复

倒序浏览
为什么不用new,用new是因为我们知道要创建的对象类型是什么,如果我们不知道创建的对象的类型什么的时候,怎么创建对象呢?
这时候就要用到反射了

评分

参与人数 1技术分 +1 收起 理由
韩军博 + 1 很给力!

查看全部评分

回复 使用道具 举报
反射是主要用来做框架的,而做框架不允许使用new来实例对象,这样主要是为了提高程序的效率和扩展性;
因为类名等数据都是从配置文件里读出来的,通过拿到的数据再根据反射可以实例化你想要的任意对象;
我觉得这也是框架牛的地方,想要什么在配置文件里改就行了。

评分

参与人数 1技术分 +1 收起 理由
韩军博 + 1 很给力!

查看全部评分

回复 使用道具 举报
以spring为例,配置bean的时候填写的完整类名称,spring注入时根据配置的完整类名称来创建实例对象,这就需要反射的参与,
知道要创建的实例类型的话,可以直接使用new,即时型;
对于框架来说不可能提前知道用户配置的类型,所以需要通过读取配置文件获得类型名称,再通过反射来创建类的实例,迟钝型。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马