黑马程序员技术交流社区

标题: java 反射在开发中有什么用?请各位前辈指点,先叩谢 [打印本页]

作者: 多一点    时间: 2014-1-3 22:40
标题: java 反射在开发中有什么用?请各位前辈指点,先叩谢
本帖最后由 多一点 于 2014-1-4 22:38 编辑

java 反射在开发中有什么用?请各位前辈指点,先叩谢
作者: Cheers_for_CRAZ    时间: 2014-1-3 23:02
貌似开发框架用的比较多。。其他不了解。
作者: 黑马IT学员    时间: 2014-1-4 17:37
JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法;这种动态获取的以及动态调用对象的方法的功能称为java语言的反射机制。
Java反射机制主要提供了以下功能:在运行时判定任意一个对象所属的类;在运行时构造任意一个类的对象;在运行时判定任意一个类所具有的成员变量和方法;在运行时调用任意一个对象的方法;生成动态代理。
作者: 小悠久    时间: 2014-1-4 18:00
通过java反射获得加载类,获得类的实例,
还有可以获得类中的私有成员属性。
Class c=Class.forName("类的名称");//通过配置文件
c.newInstance();//得到类的无参构造
c.getDeclaredFields();//获得本类的所有成员
c.getFields();//获得本类以及父类的一些公有属性
并且它允许运行中的 Java 程序对自身进行检查,或者说“自审”,并能直接操作程序的内部属性。Java 的这一能力在实际应用中也许用得不是很多,但是在其它的程序设计语言中根本就不存在这一特性。
作者: 晏勇    时间: 2014-1-4 18:18
用在框架中比较多,比如在spring中我们只要配置如下文件就可以把类名为PersonDao的实例对象加载到PersonServiceBean中
  1. <bean id="persondao" class="com.yy.dao.PersonDao"></bean>
  2.            <bean id="personService" class="com.yy.service.impl.PersonServiceBean">
  3.                    <property name="personDao" ref="persondao"></property>
  4. /bean>
复制代码

原理是spring它会根据ref的value值找到与之相等的id项,然后得到与id项所对应的完整类名,然后通过Class.forname().newInstance()加载类并进行实例化。


作者: 多一点    时间: 2014-1-4 22:36
谢谢大家的回答 感谢




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2