Java反射机制

Java反射(Reflection)是Java语言的一个核心特性,它允许运行中的java代码对自身进行自我检查,甚至修改自身的组件。反射机制提供了在运行状态中对任意一个类,都能了解这个类的所有属性和方法;对任意一个对象,都能调用这个对象的所有属性和方法。这种动态获取类的信息和动态调用对象的方法在Java中叫作反射。

Java反射主要包括三个部分
类的加载:Java的类在需要使用时才会被加载到JVM中,这个过程由类加载器(ClassLoder)完成。加载器首先检查这个类是否已经被加载过,如果没有,那么就会从磁盘中加载类的字节码并创建一个Class对象。
获取类的信息:当一个对象被创建之后,使用反射来获取对象的Class对象,通过这个Class对象可以获取这个类的所有属性和方法。
方法的调用:通过反射,可以动态调用一个对象的方法,即使这个对象的私有的,也仍然可以调用。

为什么要用反射?
(1)Java Reflection功能非常强大,并且非常有用,比如:
(2)获取任意类的名称、package信息、所有属性、方法、注解、类型、类加载器等
(3)获取任意对象的属性,并且能改变对象的属性
(4)调用任意对象的方法
(5)判断任意一个对象所属的类
(6)实例化任意一个类的对象
(7)通过反射我们可以实现动态装配,降低代码的耦合度,实现动态代理等。
具体的应用场景:
(1)框架设计:许多框架,如Spring,Hibernate等,都大量使用了反射来实现对象的自动装配,动态代理等功能。
(2)单元测试:单元测试框架(如JUnit)会使用反射来调用被注解的方法。
(3)插件化:为了实现插件化,可以通过反射加载不同的插件。
(4)对象序列化与反序列化:在对象进行序列化和反序列化的时候,会使用反射获取到对象的所有属性和方法。

反射的使用
在Java中,Class类与java.lang.reflect类库配合,对反射技术进行了完整的支持。在反射的Package中,我们经常使用功能类如下:
(1)Constructor类表示的是Class 对象所表示的类的构造方法,利用它可以在运行时动态创建对象
(2)Field类表示Class对象所表示的类的成员变量,通过它可以在运行时动态修改成员变量的属性值(包含private)
(3)Method类表示Class对象所表示的类的成员方法,通过它可以动态调用对象的方法(包含private)

  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值