JAVA中的反射机制
什么是反射?
1、Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;
对于任意一个对象,都能调用它的任意一个方法和属性
2、使用反射,可以在运行时对类Class、构造方法Constructor、普通方法Method、字段Field进行操作
Class对象
1、Class对象是对class文件(字节码文件)的描述对象。
2、获得Class对象
已知类的完整路径名(字符串):Class.forName("路径名")
已知类型:String.class,确定的参数列表
已知对象:obj.Class()
3、常用方法
使用默认构造方法创建实例:newInstance()
Constructor对象
1、Constructor对象,是构造方法的描述对象。
2、获得构造方法
公共的构造方法:Constructor<T>getConstructor(Class<?>...parameterTypes),可变参数用于确定形式参数列表
已经声明的构造方法:Constructor<T> getDeclaredConstructor(Class<?>...parameterTypes),获得私有的构造
3、实例化对象实例
newInstance(Object...intargs),可变参数用于确定实际参数列表
Method对象
1、Method对象,是普通方法的描述对象
2、获得的方法
公共方法:Method getMethod(String name,Class<?>...parameterTypes) 通过方法name获得方法,可变参数为方法的形式参数列表
已经声明的方法:Method getDeclaredMethod(String name,Class<?>...parameterTypes)方法操作
3、执行指定方法
Object invoke(Object obj,Object...args) 执行指定对象obj,指定方法,可变参数为方法的实际参数列表
Field对象
1、Field对象,是字段的描述对象
2、获得方法
所有字段:Field getField(String name),通过字段名称获得
声明字段:Field getDeclaredField(String name)
3、操作
获得内容:Object get(Object obj)
设置内容:void set(Object obj,Object value),确定实例对象
反射机制应用实例传送门:https://www.cnblogs.com/Kingram/p/9263440.html