总结

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

反射.png