JAVA反射机制之获取类信息

1,526 阅读2分钟

Java中的反射机制,使得我们可以在运行期获取Java类的字节码文件中的构造函数,成员变量,成员函数等信息。

1. 获取Class对象的三种方式:

  1. Class.forName("类名字符串")(注意:类名字符串必须是全称,包名+类名)
        Class baseInfo = Class.forName("top.sguotao.ReflectionJava");
  1. 类名.class
        Class object = Object.class;
  1. 实例对象.getClass()
        Class date = (new Date()).getClass();
        Class testclass = this.getClass();

2. 获取类的构造函数Constructor:

  1. 获取参数列表是parameterTypes,访问控制符是public的构造函数
        public Constructor getConstructor(Class[] parameterTypes)
  1. 获取所有访问控制符是public的构造函数
        public Constructor[] getConstructors()
  1. 获取参数列表是parameterTypes,并且是类自身声明的构造函数,访问控制符包含public、protected和private的函数。
	public Constructor getDeclaredConstructor(Class[] parameterTypes)
  1. 获取类自身声明的全部的构造函数,访问控制符包含public、protected和private的函数。
	public Constructor[] getDeclaredConstructors()
  1. 如果类声明在其它类的构造函数中,返回该类所在的构造函数,如果存在则返回,不存在返回null
	public Constructor getEnclosingConstructor()

3. 获取类的成员变量

  1. 获取“名称是name”的public的成员变量(包括从基类继承的、从接口实现的所有public成员变量)
	public Field getField(String name)
  1. 获取全部的public成员变量(包括从基类继承的、从接口实现的所有public成员变量)
	public Field[] getFields()
  1. 获取“名称是name”,并且是类自身声明的成员变量,包含public、protected和private成员变量。
	public Field getDeclaredField(String name)
  1. 获取全部的类自身声明的成员变量,包含public、protected和private成员变量。
	public Field[] getDeclaredFields()

4. 获取类的成员函数

  1. 获取函数名是name,参数是parameterTypes的public的函数(包括从基类继承的、从接口实现的所有public函数)
	public Method getMethod(String name, Class[] parameterTypes)
  1. 获取全部的public的函数(包括从基类继承的、从接口实现的所有public函数)
	public Method[] getMethods()
  1. 获取函数名name,参数是parameterTypes,并且是类自身声明的函数,包含public、protected和private方法。
	public Method getDeclaredMethod(String name, Class[] parameterTypes)
  1. 获取全部的类自身声明的函数,包含public、protected和private方法。
	public Method[] getDeclaredMethods()
  1. 如果这个类是其它类中某个方法的内部类,调用getEnclosingMethod()就是这个类所在的方法;若不存在,返回null。
	public Method getEnclosingMethod()