Java反射

什么是Java的反射呢?

Java的反射机制是在编译并不确定是哪个类被加载了,而是在程序运行的时候才加载、探知、自审。使用在编译期并不知道的类。这样的特点就是反射。Java的反射机制它知道类的基本结构,这种对Java类结构探知的能力,我们称为Java类的“自审”。

Java反射有什么作用呢?

利用Java反射的机制,就可以让第一个程序员在没有得到第二个程序员所写的类的时候,来完成自身代码的编译。

-------------------------------------------

应用?

反射的应用很多,很多框架都有用到

spring 的 ioc/di 也是反射….
javaBean和jsp之间调用也是反射….
struts的 FormBean 和页面之间…也是通过反射调用….
JDBC 的 classForName()也是反射…..
hibernate的 find(Class clazz) 也是反射….

-------------------------------------------------

应用举例?

1.比如eclipse就用到反射:大家都用过Jcreator和eclipse。当我们构建出一个对象的时候,去调用该对象的方法和属性的时候。一按点,编译工具就会自动的把该对象能够使用的所有的方法和属性全部都列出来,供用户进行选择。这就是利用了Java反射的原理,是对我们创建对象的探知、自审。

2.spring中的bean的创建就是通过java的反射机制来完成的:基本实现过程与本例类似,spring实现时,是通过不断的读取配置文件,将class值,属性名,属性值,实例化成一个一个的object对象,然后将这些对象放到一个map中,key值就是配置文件中的id值或者name值,也就是形成了所谓的IOC容器beanFactory,使用时,直接通过key值获取,然后强转成需要的类型即可直接使用spring帮我们创建好的实例化对象了。接下来我将仿照spring中beanFactory的实现过程进行分析。
 

-----------------------------------------------

反射的常见作用:

动态加载类,动态获取类的信息(属性、方法、构造器)

动态构造对象

动态调用类和对象的任意方法、构造器

洞天调用和处理属性

获取泛型信息

处理注解

类类型

参考自:

Java中的类加载和Class.forName();java反射机制与原理

spring的通过反射创建bean实例对象以及属性注入的原理解析

一张图搞定Java的反射机制

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值