1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- 反射-Class的方法:
- 反射-Class获取成员构造方法:
- 获取某个类的所有【公共的】构造方法组成的数组 getConstructors()
- 获取某个类的所有的构造方法组成的数组 getDeclaredConstructors()
- 获取某个公共构造方法的对象 getConstructor()
- 获取某个构造方法的对象 getDeclaredConstructor()
- 反射-Class获取成员变量对象:
- 返回所有公共成员变量对象的数组 Field[] getFields();
- 返回所有成员变量对象的数组 Field[] getDeclaredFields();
- 返回单个公共成员变量对象 Field getField(String name);
- 返回单个成员变量对象 Field getDeclaredField(String name);
- 反射-Class获取父类和接口的方法:
- 返回某个类的所有父类 getSuperclass();
- 返回某个类的所有实现的接口 getInterface();
- 反射-Class获取方法的方法:
- 返回所有的公共方法--包含从父类继承的方法 Method[] getMethods();
- 返回所有的方法 Method[] getDeclaredMethods();
- 返回单个公共的成员方法对象 Method getMethod(String name, Class<?>... parameterTypes)
- name是方法名,parameterTypes是参数类型列表
- 返回单个成员方法对象 Method getDeclaredMethod(String name, Class<?>... parameterTypes)
- Constructor--代表所有的构造方法的类型
- 根据指定的构造方法创建对象 T newInstance(Object..initargs)
- 设置为true,表示取消访问检查 setAccessible(boolean flag)
- 获取构造方法的参数类型 getParameterTypes()
- 获取构造方法的修饰符 getModifiers()
- 获取构造方法参数的个数 getParameterCount()
- Field--代表所有的成员变量的类型
- 反射-Field的方法:
- 赋值 void set(Object obj,Object value)
- 取值 Object get(Object obj)
- 获取这个成员变量的类型 getType()
- 获取这个成员变量的修饰符 getModifiers()
- Method---代表所有方法的类型
- 反射-Method的方法:
- 调用指定对象的方法 invoke(Object obj,Object...args);
- 获取方法的返回值类型 getReturnType()
- 获取方法的参数类型列表 getParameterTypes()
- 获取这个成员方法的修饰符 getModifiers()
- 案例1:基础类信息获取
- 编写程序,使用反射获取java.lang.String类的以下信息并打印:
- 类的全限定名
- 所有实现的接口
- 父类
- 访问修饰符
- 案例2:构造方法调用
- 定义一个包含私有构造方法(接收String参数)和公共无参构造方法的Person类,
- 使用反射分别创建这两种构造方法对应的实例对象。
- 案例3:字段操作
- 创建一个Student类,包含私有字段name和age,以及公共字段id。使用反射完成:
- 获取所有字段(包括私有)并打印名称和类型
- 修改私有字段age的值
- 读取私有字段name的值
- 案例4:方法调用
- 在Calculator类中定义:
- 公共方法add(int a, int b)返回两数之和
- 私有方法multiply(double a, double b)返回两数之积
- 使用反射调用这两个方法并输出结果。
- 案例5:反射综合应用
- 编写一个通用的对象转 Map 工具类ObjectToMapConverter,使用反射实现:
- 接收任意对象作为参数
- 将对象的所有非静态字段名作为 key,字段值作为 value 存入Map
- 支持忽略指定字段(如通过参数String... ignoreFields)
- public Map toMap(Object obj,String... ignoreFields){
- }
|