参考:https://www.cnblogs.com/baizhanshi/p/6605156.html
1. 反射机制是什么?
在 运行状态中,
动态 获取 类的 字节码对象, 字段对象, 方法对象,
动态调用 类的 字节码对象, 字段对象, 方法对象 的这种功能 称为 反射机制。
2. 反射能做什么?
得到一个类的字节码对象 : .class, class 对象封装的 类的元信息
使用类的字节码对象 构造 一个类的对象,
得到或 调用 任意一个类的 字段对象和方法对象,
实现 动态代理。
3. 有几种方式 获得 字节码对象, Class对象?
三种:
Class.forName("完整路径名类名");
类对象.getClass();
类名.class;
4. 通过 Class 对象, 可以做什么?
获得 类的 完整路径名类名;
获得该类的所有父接口 的字节码对象;
获得该类的 父类的 字节码对象;
调用 newInstance() 生成 该类的 一个对象;【事实上 应用了默认的构造方法】
获得该类的 所有 构造方法的 构造器对象;
获得 该类的 所有 属性的 字段对象,传参字段名 可以得到 特定某个字段对象;
获得 该类的 所有 方法的 方法对象,传参 方法名、方法参数字节码对象 可以得到 特定某个 方法对象;
5. 构造器对象 可以做什么?
获得 对应 构造方法的 参数类型 的 字节码对象;
调用 newInstance()并传入对应的参数,即调用对应的构造方法生成 该类的 一个对象;
6. 字段对象 可以做什么?
获得 对应属性的 权限修饰符、属性字段类型的字节码对象、字段名;
【权限修饰符 是 int 类型, 通过 Modifier.toString(temp)获得 修饰符名字符串】
7. 方法对象 可以做什么?
可以 获得 对应方法的 返回值类型 的 字节码对象, 参数类型的字节码对象,抛出异常类型的字节码对象;
可以 获得 对应方法的 权限修饰符, 可以获得方法名;
8. 反射机制的应用?
在泛型为Integer的ArrayList中存放一个String类型的对象。
通过反射取得并修改数组的信息
通过反射机制修改数组的大小
将反射机制应用于工厂模式
网友评论