一、概述
- 反射的源头: 一个类型的class对象
- 反射就是把一个类中的各种成分映射成一种对象。简单的说就是把类看成一个类类型的对象。
- 反射发生在程序运行期间的行为。
二、作用与功能
1、在运行时判断任意一个对象所属的类;
2、在运行时构造任意一个类的对象;
3、在运行时判断任意一个类所具有的成员变量和方法;
4、在运行时调用任意一个对象的方法;
5、生成动态代理。
三、获取方式
1、对象.getClass()
2、类名.class();
3、Class.forName包名+类名)
四、操作方式(方法)
1、操作构造器
(1) 获取构造器
只能获取公共的构造器
Constructor<T> getConstructor(Class<?>... parameterTypes)
Constructor<?>[] getConstructors()
获取所有修饰符修饰的构造器
Constructor<T> getDeclaredConstructor(Class<?>... parameterTypes)
Constructor<?>[] getDeclaredConstructors()
(2)使用构造器创建对象
- 直接通过Class类中的newInstance() 方法创建调用,默认调用空构造
- 通过Constructor的newInstance() 创建对象,执行使用当前构造器对对象初始化信息
2、操作方法
- 获取方法
- 操作方法 Object invoke(Object obj, Object... args) 执行这个方法 第一个参数匹配调用方法的对象,如果是静态方法设置为null 第二个参数:实参
3、 操作属性
- 获取属性 getFields()...
- 操作属性方法: void set(Object obj, Object value) 为某一个属性设置值 第一个参数对象这个成员变量的对象 第二个参数:属性的值
- get(Object obj) 获取某一个对象的当前属性值
网友评论