本文最后更新于:1 个月前

Java的反射(reflection)机制是指在程序的运行状态中,可以构造任意一个类的对象,可以了解任意一个对象所属的类,可以了解任意一个类的成员变量和方法,可以调用任意一个对象的属性和方法。这种动态获取程序信息以及动态调用对象的功能称为Java语言的反射机制。反射被视为动态语言的关键。

反射

Java 中的 Class 类

Class 类的构造方法是私有的,无法在代码中显式的生命一个 Class 对象

获得 Class 类的对象

  • 通过类的静态成员表示,每个类都有一个隐含的静态成员 class
  • 通过类的 getClass() 方法,和上类似
  • 通过 Class 类的静态方法 forName() 获取 Class 对象(可实现程序运行时类的动态加载)

Class 类的对象得到类的对象

newInstance() 方法,此方法调用类的 无参构造函数

Java反射机制

参考自

Java 反射机制在程序运行时,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性。这种 动态的获取信息 以及 动态调用对象的方法 的功能称为 java 的反射机制。

变量

  • getFields() 获取所有 public 访问权限的变量
  • getDeclaredFields() 获取所有本类声明的变量
  • getDeclaredField(参数名) 获取私有变量

以下方法对变量对象调用

  • getModifiers() 获取变量的访问权限
  • getType().getName() 获取变量的类型
  • getName() 获取变量名

方法

  • getMethods() 获取所有 public 访问权限的方法
  • getDeclaredMethods() 获取所有本类的方法

以下方法对方法对象调用

  • getModifiers() 获取方法的访问权限
  • getReturnType() 获取方法的返回值类型
  • getParameters() 获取方法的所有参数
    • getType().getName() 获取方法参数的类型
    • getName() 获取方法参数名
  • getExceptionTypes() 获取方法抛出的异常
  • getDeclaredMethod(方法名,[参数类型]) 获取私有方法
  • setAccessible(true) 获取私有方法的访问权限