java反射

反射:

Java反射机制是指在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;
对于任意一个对象,都能够调用它的任意一个方法和属性;
这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。
用一句话总结就是反射可以实现在运行时可以知道任意一个类的属性和方法。

获取Class对象的方式:

  1、Object.getClass()

  2、Object.class

  3、Class.forName()

父Class:

  class.getSupperClass()

反射就是通过这三个类才能在运行时改变对象状态:

java.lang.reflect.Field :对应类变量

java.lang.reflect.Method :对应类方法

java.lang.reflect.Constructor :对应类构造函数

1、field

getDeclaredField(String name)获取指定的变量(只要是声明的变量都能获得,包括private)
getField(String name)获取指定的变量(只能获得public的)
getDeclaredFields()获取所有声明的变量(包括private)
getFields()获取所有的public变量
setAccessable();该方法能够操作private的属性
2、method
getDeclaredMethod(String name, Class<?>... parameterTypes)
根据方法名获得指定的方法, 参数name为方法名,参数parameterTypes为方法的参数类型,如 getDeclaredMethod(“eat”, String.class)
getMethod(String name, Class<?>... parameterTypes)根据方法名获取指定的public方法,其它同上
getDeclaredMethods()获取所有声明的方法
getMethods()获取所有的public方法
3、constructor
getDeclaredConstructor(Class<?>... parameterTypes)获取指定构造函数,参数parameterTypes为构造方法的参数类型
getConstructor(Class<?>... parameterTypes)获取指定public构造函数,参数parameterTypes为构造方法的参数类型
getDeclaredConstructors()获取所有声明的构造方法
getConstructors()获取所有的public构造方法

 创建对象:

  Constructor.newInstance();可以使用任何构造创建

  Class.newInstance();只能通过无参构造器创建对象

https://www.jianshu.com/p/1c10b6c20d14

原文地址:https://www.cnblogs.com/nxzblogs/p/9198634.html