java 中反射的应用:
1,获取指定类的所有成员变量,包括父类的成员变量:
/*** * get all field ,including fields in father/super class * * @param clazz * @return */ public static List<Field> getAllFields(Class clazz) { List<Field> fieldsList = new ArrayList<Field>();// return object if (clazz == null) { return null; } Class superClass = clazz.getSuperclass();// father class if (superClass.getName().equals(Object.class.getName()))/* * java.lang.Object */{ // System.out.println("no father"); } else { // System.out.println("has father"); fieldsList.addAll(getAllFields(superClass));// Recursive } Field[] fields = clazz.getDeclaredFields(); for (int i = 0; i < fields.length; i++) { Field field = fields[i]; fieldsList.add(field); } return fieldsList; }
2,设置指定属性(私有成员变量)的值
/*** * * @param obj * @param propertyName * : property name * @param propertyValue * : value of property * @throws SecurityException * @throws NoSuchFieldException * @throws IllegalArgumentException * @throws IllegalAccessException */ public static void setObjectValue(Object obj, String propertyName, String propertyValue) throws SecurityException, NoSuchFieldException, IllegalArgumentException, IllegalAccessException { if (StringUtils.isEmpty(propertyName) || StringUtils.isEmpty(propertyValue)) { return; } Class<?> clazz = obj.getClass(); Field name = clazz.getDeclaredField(propertyName); name.setAccessible(true); name.set(obj, propertyValue); }
3,获取指定属性(私有成员变量)的值
/*** * * @param obj * @param propertyName :name of property * @return * @throws SecurityException * @throws NoSuchFieldException * @throws IllegalArgumentException * @throws IllegalAccessException */ public static Object getObjectValue(Object obj, String propertyName) throws SecurityException, NoSuchFieldException, IllegalArgumentException, IllegalAccessException { if (StringUtils.isEmpty(propertyName)) { return null; } Class<?> clazz = obj.getClass(); Field name = clazz.getDeclaredField(propertyName); name.setAccessible(true); return name.get(obj); }
说明:依赖的jar:commons-lang-2.6.jar
相关推荐
代码主要实现了Java反射应用实例, 包含利用反射方法创建对象(使用默认构造函数和自定义构造函数),访问对应对象的方法(包括带参数的和不带参数的),访问对应对象的域(Field). 从这里可以看到代码的详细解说:...
java反射应用详细介绍.rar
在向学生讲解Class.forName()方法的使用时,有时需要扩展讲解为什么这样书写的原理,于是,扩展讲解Java反射技术可以查看被监视类的方法(构造方法和普通方法)、公有属性的功能,以达到封闭功能的效果。该例子使用...
JAVA 反射机制应用JAVA 反射机制应用JAVA 反射机制应用JAVA 反射机制应用JAVA 反射机制应用JAVA 反射机制应用JAVA 反射机制应用
这个文档讲述了反射的原理,以及class的各方面的应用举一反三,全面深入的讲述了反射的机制以及巧妙应用
几个小demo,介绍了反射的几个api操作,最后写了一个简单的Java反射应用:工厂+反射+配置文件。
NULL 博文链接:https://dragonmandance.iteye.com/blog/2336911
java反射机制应用,文档中列举了使用java反射机制的各个应用场景,加以代码实例,使用学习非常方便。
描述JAVA反射机制应用、举例。描述反射机制的具体实现及方法实现。
JAVA反射机制及应用例子.。。Reflection API
本篇文章依旧采用小例子来说明,因为我始终觉的,案例驱动是最好的,要不然只看理论的话,看了也不懂,不过建议大家在看完文章之后,在回过头去看看理论,会有更好的理解。 下面开始正文。 【案例1】通过一个对象...
NULL 博文链接:https://x125858805.iteye.com/blog/2262979
java反射机制详解与应用
文章目录一、Java反射定义二、Java反射机制实现1、Class对象获取2、获取class对象的摘要信息3、获取class对象的属性、方法、构造函数等三、反射的应用场景1、动态代理2、自定义注解实现日志管理 写在前面:Java反射...
Java中,反射是一种强大的工具。它使您能够创建灵活的代码,这些代码可以在运行时装配,无需在组件之间进行源代表链接。反射允许我们在编写与执行时,使我们的程序代码能够接入装载到JVM中的类的内部信息,而不是源...
Java反射机制经典案例
Java反射 调用空参方法 调用Object类型参数的方法 调用基本类型参数的方法 调用基本类型数组参数的方法 调用String数组参数的方法 调用Object数组参数的方法 调用私有方法
java反射技术应用的很广泛,多看源码,对理解java反射的理解会有很好的认识,这个源码有我自己的理解在里边
对在Java环境下应用反射的性能,做了测试分析