什么是反射
Java反射说的是在运行状态中,对于任何一个类,我们都能够知道这个类有哪些方法和属性。对于任何一个对象,我们都能够对它的方法和属性进行调用。我们把这种动态获取对象信息和调用对象方法的功能称之为反射机制。
要想解剖一个类,必须先要获取到该类的字节码文件对象。而解剖使用的就是Class类中的方法.所以先要获取到每一个字节码文件对应的Class类型的对象.
类对象概念
所有的类,都存在一个类对象,这个类对象用于提供类本身的信息,比如有几种构造方法, 有多少属性,有哪些普通方法。
获取类对象有3种方式
- Class.forName
- 类.class
- new 类().getClass()
在一个JVM中,一种类,只会有一个类对象存在。所以以上三种方式取出来的类对象,都是一样的。
反射机制 - 创建对象
与传统的通过new 来获取对象的方式不同
反射机制,会先拿到Hero的“类对象”,然后通过类对象获取“构造器对象”
再通过构造器对象创建一个对象
反射机制 - 访问属性
通过反射机制修改对象的属性
反射机制 - 调用方法
通过反射机制,调用一个对象的方法
有什么用
依赖注入,反转控制
运行时切换类的调用
参考:
https://blog.youkuaiyun.com/lwl20140904/article/details/80163880