public class ReflectUtil {    public static Object getField(String clazzName, Object target, String name) throws Exception {        return getField(Class.forName(clazzName), target, name);    }    public static Object getField(Class clazz, Object target, String name) throws Exception {        Field field = clazz.getDeclaredField(name);        field.setAccessible(true);        return field.get(target);    }    public static Object getFieldNoException(String clazzName, Object target, String name) {        try {            return getFieldNoException(Class.forName(clazzName), target, name);        } catch (ClassNotFoundException e) {            e.printStackTrace();        }        return null;    }    public static Object getFieldNoException(Class clazz, Object target, String name) {        try {            return ReflectUtil.getField(clazz, target, name);        } catch (Exception e) {            e.printStackTrace();        }        return null;    }    public static void setField(String clazzName, Object target, String name, Object value) throws Exception {        setField(Class.forName(clazzName), target, name, value);    }    public static void setField(Class clazz, Object target, String name, Object value) throws Exception {        Field field = clazz.getDeclaredField(name);        field.setAccessible(true);        field.set(target, value);    }    public static void setFieldNoException(String clazzName, Object target, String name, Object value) {        try {            setFieldNoException(Class.forName(clazzName), target, name, value);        } catch (ClassNotFoundException e) {            e.printStackTrace();        }    }    public static void setFieldNoException(Class clazz, Object target, String name, Object value) {        try {            ReflectUtil.setField(clazz, target, name, value);        } catch (Exception e) {            e.printStackTrace();        }    }    public static Object invoke(String clazzName, Object target, String name, Object... args)            throws Exception {       return invoke(Class.forName(clazzName), target, name, args);    }    @SuppressWarnings("unchecked")    public static Object invoke(Class clazz, Object target, String name, Object... args)            throws Exception {        Class[] parameterTypes = null;        if (args != null) {            parameterTypes = new Class[args.length];            for (int i = 0; i < args.length; i++) {                parameterTypes[i] = args[i].getClass();            }        }        Method method = clazz.getDeclaredMethod(name, parameterTypes);        method.setAccessible(true);        return method.invoke(target, args);    }    public static Object invoke(String clazzName, Object target, String name, Class[] parameterTypes, Object... args)            throws Exception {        return invoke(Class.forName(clazzName), target, name, parameterTypes, args);    }    @SuppressWarnings("unchecked")    public static Object invoke(Class clazz, Object target, String name, Class[] parameterTypes, Object... args)            throws Exception {        Method method = clazz.getDeclaredMethod(name, parameterTypes);        method.setAccessible(true);        return method.invoke(target, args);    }    public static Object invokeNoException(String clazzName, Object target, String name, Class[] parameterTypes, Object... args) {        try {            return invokeNoException(Class.forName(clazzName), target, name, parameterTypes, args);        } catch (ClassNotFoundException e) {            e.printStackTrace();        }        return null;    }    @SuppressWarnings("unchecked")    public static Object invokeNoException(Class clazz, Object target, String name, Class[] parameterTypes, Object... args) {        try {            return invoke(clazz, target, name, parameterTypes, args);        } catch (Exception e) {            e.printStackTrace();        }        return null;    }}

欢迎关注微信公众号:DroidMind
精品内容独家发布平台


呈现与博客不一样的技术干货

更多相关文章

  1. 硬核干货!系统盘点Android开发者必须掌握的Java知识体系,收藏这一
  2. 感谢国内知名 Android 开发者 「stormzhang」推荐了我的公众号
  3. 【腾讯Bugly干货分享】Android动态布局入门及NinePatchChunk解密
  4. 干货文章整理(建议有时间多看几遍)
  5. 我想给你们介绍一个与众不同的Android微信公众号
  6. Git点赞82K!字节跳动保姆级Android学习指南,干货满满
  7. 干货必读丨Android APK反编译
  8. Android TimeUtile日期处理工具类(干货)
  9. Android开发干货大全(持续更新)

随机推荐

  1. Android中播放GIF图片动画
  2. android基础入门布局讲解(2)
  3. 2011.06.07——— android 1.6 launcher
  4. 博客园Android客户端V3.0
  5. 理解 Android(安卓)本地数据存储 API
  6. Android鍏ラ棬鏁欑▼
  7. Android开发指南(37) —— Data Backup
  8. Fiddler 跟踪 Android(安卓)数据包
  9. Android(安卓)5.0 Material 自定义Dialog
  10. eclipse 导入报错 Invalid project descr