Java - 反射相关
1. 简介
万事万物皆对象, 类也是对象, 可以通过反射创建类对象和使用类对象
反射的作用: 创建类的对象
特点: 实现了java对象的动态创建
传统方式创建对象:
new 类名(); 这种方式创建对象必须预先知道要使用的类, 如果要修改使用的类, 必须要修改源码
2. 获取类对象 (反射获取类对象的三种方式)
1. Class.forName("类的全限定路径"); // 根据全限定路径获取
2. 对象名.getClass(); // 根据对象获取
3. 类名.class; // 根据类名获取
类对象常用的方法:
getPackage(); // 获取类对象的包名
getModifiers(); // 获取类的修饰符,返回的是int值
getName(); // 获取类的名称(全限定)
getSimpleName(); // 获取类的名称(类名)
getSuperclass(); // 获取类的父类的类对象
newInstence(); // 实例化一个对象
3. 反射获取类对象的属性
类对象.getFields(); 获取所有公共字段(包括父类)
类对象.getDeclaredFields(); 获取所有声明的字段(不包括父类)
类对象.getField(String name); 获取指定的公共字段(包括父类)
类对象.getDeclaredField(String name); 获取指定的声明的字段(不包括父类)
类属性对象.getName(); 获取属性名
类属性对象.getModifiers(); 获取修饰符
类属性对象.getType(); 获取类型, 返回的是类型的Class对象
类属性对象.setAccessible(true); 暴力反射, 可以操作私有化属性
操作静态属性:
类属性对象.get(null); 返回静态属性的值
类属性对象.set(null, "值"); 赋值
操作非静态属性:
类属性对象.get(Object obj); 返回参数对象中该属性的值
类属性对象.set(Object obj, "值"); 给参数对象中该属性赋值
4. 反射获取类对象的方法
获取类对象的方法与获取类对象的属性的写法相似
执行方法
类方法对象.invoke(Object obj, Class ... clazz); 执行方法
第一个参数表示要执行哪个对象的方法, 后面可变参数写要执行的方法的参数类型的类对象
如果执行的是静态方法, 第一个参数为 null
浙公网安备 33010602011771号