总结
- Java 反射是指 Java 程序在运行时,可以动态的加载类,并调用类的属性和方法;
- 使用反射可以获取类的属性、方法、构造方法、父类、父接口等所有信息,并且可以动态的调用属性、方法;
- 反射的入口类是 Class,常用的获取 Class 对象的方法有 Class.forName("全类名")、类名.class和 对象名.getClass() 三种;
getMethods()
只能获取 public 修饰的方法,但这些方法既可以是本类中定义的、也可以在父类(或父接口)中定义的;getDeclaredMethods()
可以获取 private 等四种访问修饰符修饰的方法,但这些方法只能是在本类定义的,不包含父类(或父接口)中定义的方法。getDeclaredFields()
与getFields()
,及getDeclaredConstructors()
和getConstructors()
方法的区别与之类似;- 在使用反射突破访问修饰符限制时,需要先对方法或属性设置
setAccessible(true)
; - Array 类提供了一系列 static 方法,可以创建动态数组,对数组元素进行赋值、取值操作。例如,可以使用
Array.newInstance()
方法来创建数组对象。 - 反射大量存在于后续学习的框架底层,但在初级阶段应用的比较少。