文章目录
Android 插件化系列文章目录
前言
一、成员变量
二、反射工具类入口方法
三、反射 Field 相关方法
1、反射 Field 字段
2、反射获取 Field 对应实例
3、反射设置 Field 对应实例
四、反射 Method 相关方法
1、反射 Method 方法
2、反射调用 Method 方法
五、完整反射工具类代码示例
前言
在前面的几篇博客中 , 大量使用到了反射操作 , 使用反射时 , 需要处理大量的异常信息 , 很麻烦 ;
在本篇博客中 , 封装一个反射工具类 , 用于反射的常用操作 , 如 反射类 , 字段 , 方法 , 实例化对象 , 获取 / 设置 字段 , 执行方法 等操作 ;
一、成员变量
将反射涉及到的 类 , 实例对象 , 字段 , 方法 , 设置为反射工具类的成员变量 ;
/** * 反射的类型 */ private Class<?> mClass; /** * 反射针对的实例对象 * 如获取 Object 某个字段的值 */ private Object mCaller; /** * 反射的字段 */ private Field mField; /** * 反射的方法 */ private Method mMethod;
二、反射工具类入口方法
入口方法主要是设置 反射类 / 对象 ;
/** * 反射某个类的入口方法 * * @param type 要反射的类 * @return */ public static Reflector on(Class<?> type) { Reflector reflector = new Reflector(); reflector.mClass = type; return reflector; } /** * 反射某个类的入口方法 * * @param className 要反射的类名 * @return */ public static Reflector on(String className) { try { return on(Class.forName(className)); } catch (ClassNotFoundException e) { e.printStackTrace(); return null; } } /** * 反射某个类的入口方法 * * @param object 反射类对应的实例对象 * @return */ public static Reflector on(Object object) { return on(object.getClass()).with(object); } /** * 设置反射对应的实例对象 * * @param object * @return */ public Reflector with(Object object) { mCaller = object; return this; }