反射(Reflection)
- Java 反射是被视为动态语言的关键,反射机制允许程序在执行期间借助于 Reflection API 取得任何类的内部信息,并能直接操作任意对象的内部属性以及方法。
- 反射机制就是通过一个抽象的类名能够在加载类的内存中找到相匹配的类的具体信息。
Java 能够反射的前提
-
已经加载过这个类,就可以通过类名来寻找这个类的所有相关信息。
-
就例如:和人类的记忆反射一样,事先在记忆中有了这个事物的信息,人就可以通过这个事物的名字,然后在记忆中寻找相关的具体信息
Java 反射机制提供的功能
- 在运行时判断任意一个对象所属的类
- 在运行时构造任意一个类的对象
- 在运行时判断任意一个类所具有的的成员变量和方法
- 在运行时调用任意一个对象的成员变量和方法
- 生成动态代理是反射的一个关键应用
Java 反射机制研究及应用
-
反射相关的主要 API:
- java.lang.Class:代表一个类
- java.lang.reflect.Method:代表类的方法
- java.lang.reflect.Field:代表类的成员变量
- java.lang.reflect.Constructor:代表类的构造方法
-
类的反射机制应用:
一个类极限情况都有些什么?
- 一个父类
- 多个接口
- 多个属性
- 多个构造方法,包括构造的参数以及类型
- 多个不同方法,包括参数以及其类型,返回值类型