Java 的反射机制是指在运行状态中:
- 对任意一个类,都能够知道这个类的所有属性和方法
- 对任意一个对象,都能调用这个对象的所有属性和方法
- 检查类的属性和方法
- 在运行时检查对象的类型
- 动态构造某个类的对象
- 可以任意调用对象的方法
- Field:成员变量
- Method:成员方法
- Constructor:构造方法
包括父类成员。
- getField
- getMethod
- getConstructor
包括 private 和 protected 的成员,但不包括父类成员。
- getDeclaredField
- getDeclaredMethod
- getDeclaredConstructor
利用反射访问私有属性:使用 setAccessible(true)
性能时一个问题。反射相当于一系列解释操作,通知 JVM 要做什么,性能比直接的 Java 要慢很多。