反射工具类
来源:互联网 发布:绘画app 知乎 编辑:程序博客网 时间:2024/05/12 05:20
public class Reflection { /** * 得到某个对象的公共属性 * * @param owner, fieldName * @return 该属性对象 * @throws Exception * */ public Object getProperty(Object owner, String fieldName) throws Exception { Class ownerClass = owner.getClass(); Field field = ownerClass.getField(fieldName); Object property = field.get(owner); return property; } /** * 得到某类的静态公共属性 * * @param className 类名 * @param fieldName 属性名 * @return 该属性对象 * @throws Exception */ public Object getStaticProperty(String className, String fieldName) throws Exception { Class ownerClass = Class.forName(className); Field field = ownerClass.getField(fieldName); Object property = field.get(ownerClass); return property; } /** * 执行某对象方法 * * @param owner * 对象 * @param methodName * 方法名 * @param args * 参数 * @return 方法返回值 * @throws Exception */ public Object invokeMethod(Object owner, String methodName, Object[] args) throws Exception { Class ownerClass = owner.getClass(); Class[] argsClass = new Class[args.length]; for (int i = 0, j = args.length; i < j; i++) { argsClass[i] = args[i].getClass(); } Method method = ownerClass.getMethod(methodName, argsClass); return method.invoke(owner, args); } /** * 执行某类的静态方法 * * @param className * 类名 * @param methodName * 方法名 * @param args * 参数数组 * @return 执行方法返回的结果 * @throws Exception */ public Object invokeStaticMethod(String className, String methodName, Object[] args) throws Exception { Class ownerClass = Class.forName(className); Class[] argsClass = new Class[args.length]; for (int i = 0, j = args.length; i < j; i++) { argsClass[i] = args[i].getClass(); } Method method = ownerClass.getMethod(methodName, argsClass); return method.invoke(null, args); } /** * 新建实例 * @param className 类名 * @param args 构造函数的参数 * 如果无构造参数,args 填写为 null * @return 新建的实例 * @throws Exception */ public Object newInstance(String className, Object[] args,Class[] argsType) throws NoSuchMethodException, SecurityException, ClassNotFoundException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException { Class newoneClass = Class.forName(className); if(args == null){ return newoneClass.newInstance(); }else{ // Class[] argsClass = new Class[args.length]; //// for (int i = 0, j = args.length; i < j; i++) { // argsClass[i] = args[i].getClass(); // } //// Constructor cons = newoneClass.getConstructor(argsClass); Constructor cons = newoneClass.getConstructor(argsType); return cons.newInstance(args); } } /** * 是不是某个类的实例 * @param obj 实例 * @param cls 类 * @return 如果 obj 是此类的实例,则返回 true */ public boolean isInstance(Object obj, Class cls) { return cls.isInstance(obj); } /** * 得到数组中的某个元素 * @param array 数组 * @param index 索引 * @return 返回指定数组对象中索引组件的值 */ public Object getByArray(Object array, int index) { return Array.get(array,index); } public Class<?> GetClassListByPackage(String pPackage) { Package _Package = Package.getPackage(pPackage); Class<?> _List =_Package.getClass(); return _List; }}
0 0
- 工具类-反射工具类
- 反射通用工具类
- Flex反射工具类
- 反射工具类
- java反射工具类
- java反射工具类
- 反射工具类
- Java反射工具类
- Java反射工具类
- JAVA反射工具类
- 反射工具类
- java反射工具类
- 反射的工具类
- 反射工具类
- 反射-框架、工具类
- 【JAVA】反射工具类
- 反射工具类
- 反射工具类
- SAP用Function发布供外部调用的webservice
- STL算法
- 第十三周项目训练1 阅读程序
- win7 下SonarQube服务启动失败
- MySQL 索引原理及慢查询优化
- 反射工具类
- 如何、怎么使MyEclipse,Eclipse,UEP studio下支持编写HTML/JS/CSS/JSP页面的自动提示。
- 处理C++源代码的程序(2)
- 第16周程序阅读-文件操作(1)
- Spring Mybatis 多数据源配置(AspectJ 注解方式)的一些问题
- Android 振动器系统架构
- DateUtil
- 科研工作者一般怎么找文献?
- 杭州市流动人口服务管理条例