【Android 插件化】Hook 插件化框架 ( 反射工具类 | 反射常用操作整理 )(一)

文章目录

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;
    }



上一篇:项目管理部分随笔索引


下一篇:Windows 注册自定义的协议 实现通过网页调用本地程序的功能例如QQ等