Android反射工具类ReflectUtil
来源:互联网 发布:远程网络教育 编辑:程序博客网 时间:2024/05/21 17:52
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; }}
阅读全文
0 0
- Android反射工具类ReflectUtil
- ReflectUtil反射工具类2
- JAVA反射技术应用-ReflectUtil
- ReflectUtil
- ReflectUtil
- 反射类的使用ReflectUtil(设置set和获取get某个类属性值)
- 反射类的使用ReflectUtil(设置set和获取get某个类属性值)
- ResUtil~~Android反射工具类
- Android 反射工具
- Android 反射工具
- 工具类-反射工具类
- 反射通用工具类
- Flex反射工具类
- 反射工具类
- java反射工具类
- java反射工具类
- 反射工具类
- Java反射工具类
- Python自然语言处理 5 分类和标注词汇
- matlab2012a到期重新激活
- 【gensim--dictionary】使用方法
- percona monitoring and management搭建
- 分布式随笔
- Android反射工具类ReflectUtil
- java内存泄漏的定位与分析
- 2017.11.22笔记
- 【Scikit-Learn 中文文档】交叉分解
- 13. Roman to Integer
- Can't create cache file
- 外汇品牌B&G GLOBAL MARKETS强势入驻中国 瞬间成为同行话题热点
- TensorBoard 简介及使用流程
- 两个栈实现队列(经典面试题)java