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博客导航总结,以及个人常用android免费学习干货(文章,视频,矢
  2. 谷安: 两分钟内呈现 6 小时的 Android(安卓)游戏开发过程… [视
  3. 硬核干货!系统盘点Android开发者必须掌握的Java知识体系,收藏这一
  4. android异常 More than one file was found with OS independent
  5. 解决Android(安卓)Studio Gradle DSL method not found: 'androi
  6. 感谢国内知名 Android(安卓)开发者 「stormzhang」推荐了我的公
  7. 【腾讯Bugly干货分享】Android动态布局入门及NinePatchChunk解密
  8. 【绝对干货】超全Android中高级面试复习大纲,覆盖所有面试知识!(上
  9. android优化工具

随机推荐

  1. ListView分隔线
  2. Android ImageView图片拖动效果
  3. android button 基本原理
  4. Android 自学之对话框
  5. Android ViewGroup onInterceptTouchEven
  6. Android(安卓)Studio 的项目结构
  7. Android中View的量算、布局及绘图机制
  8. android通用文件操作
  9. android 页面滑动
  10. Android开发工具之DDMS