反射 在程序运行时: 获取任意类的方法和属性(含私有) 调用任意对象的方法和属性(含私有) 前提:获取类的字节码对象(Class对象) 三种方法: 对象.getClass(); 类名.class; Class.forname(String className); 通过字节码对象获取构造方法的功能: Constuctor<?>[]getConstuctors():获取public构造方法(数组形式) Constuctor<?>[]getDeclaredConstuctors():获取所有权限的构造方法(数组形式) Constuctor<T>[]getConstuctors(Class<?>...parameterTypes):列表形式获取公共有参构造 Constuctor<T>[]getDeclaredConstuctors(Class<?>...parameterTypes):列表形式获取任意有参构造 通过获取的构造方法(有参或无参)或字节码对象(无参)创建对象newInstance() 通过字节码对象获取成员变量: Field[]getFields():(数组形式)获取所有公共成员变量,加Declared获取所有权限 Field Class.getField(String 类型名);获取指定类型公共成员变量,加Declared获取所有权限 获取字段对象 修改成员变量(覆盖)set(类对象,成员变量值) Object通过字段对象.get(类对象)获取字段 对象.setAccessible(true):设置反射时取消Java的访问检查,暴力访问 (Object方法的返回值)方法对象.Invoke(类对象,成员变量值)调用指定对象的成员方法 Method字节码对象.getMethod(方法名,参数类型.class,...)获取成员方法 JavaBean用于封装数据 类使用public来修饰 提供私有修饰的成员变量 为成员变量提供getter和setter方法 提供公共无参构造 实现(序列化)Serializable接口 BeanUtils Apache组织提供的Commons类的一个组件,为简化JavaBean操作 SetProperty(对象,成员属性名,属性值),赋值 GetProperty(对象,成员属性名),返回String类型的属性值 Populate(对象,Map集合)用Map集合修改成员变量值
|