反射
1、什么是反射?
1)、JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和
方法;对于任意一个对象,都能够调用它的任意一个方法和属性。
2)、使用反射,可以在运行是对类Class、构造方法Constructor、普通方法Method、字
段Filed进行操作。
2、Class对象
1)、Class对象,是对class文件(字节码文件)的描述对象。
2)、获得Class对象
已知类的完整路径名(字符串):Class.forName(...)
已知类型:String,class,确定参数列表
已知对象:obj.getClass()
3)、常用方法
使用默认构造方法创建实例:newInstance()
3、Constructor对象
1)、Constructor对象,是构造方法的描述对象。
2)、获得构造方法
公共的构造方法:
Constructor<T> getConstructor(Class<?>...parameterTypes),可变参数用于
确定形式参数列表。
已经声明的构造方法:
Constructor<T> getDeclaredConstructor(Class<?>...parameterTypes),获得私
有的构造
3)、实例化对象实例
newInstance(Object...initargs),可变参数用于确定实际参数列表
4、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,制定方法,可变参数
为方法的实际参数列表
5、Field对象
1)、Field对象,是字段的描述对象。
2)、获得方法
获得公共方法:
所有字段:Field getField(String name ),通过字段名称
声明字段:Field getDeclaredField(String name )
3)、操作
获得内容:Object get(Object obj)
设置内容:void set(Object obj,Object value),确定实例对象