介绍:
java的反射机制,在运行状态中,对于任意的一个类,都知道任意一个类的所有属性和方法,对于任意一个对象,都能够调用它的任意一个属性和方法,这种动态获取信息以及动态调用方式,成为反射
获取反射的Class文件方式三种
(1)Object类中的getClass()方法
(2)Class c=类名.class
(3)Class类中的静态方法forName
- 注意事项:
(1)反射中所有的泛型都是?号
(2)反射方法中的返回值类型,都是Object类型
- newInstance()
创建对象 相当于调用无参构造,完成对象的创建
- 反射中的四个类
class (类对象)
Constructor(构造器对象)
Field(属性对象)
Method(方法对象)
- 反射的步骤:
(1)导包 java.lang.reflect
(2)获取你想要的操作的class字节码对象
(3)调用方法
(4)操作信息
- Constructor 构造器对象
无参构造 使用class类中的
newInstance()
方法创建对象
有参构造 获取Constructor构造器对象的方法 先获取构造器,然后再使用Constructor类中的newInstance()
方法
- Field 属性对象
1.被public修饰的属性
Field getField(String name)
返回一个 Field 对象,它反映此 Class
对象所表示的类或接口的指定公共成员字段。
Field类中的
void set(Object obj, Object value)
将指定对象变量上此 Field 对象表示的字段设置为指定的新值。
Object get(Object obj)
返回指定对象上此 Field 表示的字段的值。扫描二维码关注公众号,回复: 3024762 查看本文章
2.所有的属性
Field getDeclaredField(String name)
返回一个 Field 对象,该对象反映此 Class
对象所表示的类或接口的指定已声明字段
Field 继承的方法
void setAccessible(boolean flag)
将此对象的 accessible 标志设置为指示的布尔值。
- Method 方法对象
1.被public修饰的方法
Method getMethod(String name, Class<?>... parameterTypes)
返回一个 Method
对象,它反映此 Class 对象所表示的类或接口的指定公共成员方法。
Method类中的方法 Object invoke(Object obj, Object... args)
对带有指定参数的指定对象调用由此 Method 对象表示的底层方法。
2.所有的方法
Method getDeclaredMethod(String name, Class<?>... parameterTypes)
返回一个 Method 对象,该对象反映此 Class 对象所表示的类或接口的指定已声明方法。