Java利用反射机制遍历成员变量
2015-01-23 13:20
501 查看
package reportcustomize; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.Date; /** * Created by sksocool on 15-1-23. */ public class ReflectTest { public static void testReflect(Object model) throws NoSuchMethodException, IllegalAccessException, IllegalArgumentException, InvocationTargetException { Field[] field = model.getClass().getDeclaredFields(); //获取实体类的所有属性,返回Field数组 for (int j = 0; j < field.length; j++) { //遍历所有属性 String name = field[j].getName(); //获取属性的名字 System.out.println("attribute name:" + name); name = name.substring(0, 1).toUpperCase() + name.substring(1); //将属性的首字符大写,方便构造get,set方法 String type = field[j].getGenericType().toString(); //获取属性的类型 if (type.equals("class java.lang.String")) { //如果type是类类型,则前面包含"class ",后面跟类名 Method m = model.getClass().getMethod("get" + name); String value = (String) m.invoke(model); //调用getter方法获取属性值 if (value != null) { System.out.println("attribute value:" + value); } } if (type.equals("class java.lang.Integer")) { Method m = model.getClass().getMethod("get" + name); Integer value = (Integer) m.invoke(model); if (value != null) { System.out.println("attribute value:" + value); } } if (type.equals("class java.lang.Short")) { Method m = model.getClass().getMethod("get" + name); Short value = (Short) m.invoke(model); if (value != null) { System.out.println("attribute value:" + value); } } if (type.equals("class java.lang.Double")) { Method m = model.getClass().getMethod("get" + name); Double value = (Double) m.invoke(model); if (value != null) { System.out.println("attribute value:" + value); } } if (type.equals("class java.lang.Boolean")) { Method m = model.getClass().getMethod("get" + name); Boolean value = (Boolean) m.invoke(model); if (value != null) { System.out.println("attribute value:" + value); } } if (type.equals("class java.util.Date")) { Method m = model.getClass().getMethod("get" + name); Date value = (Date) m.invoke(model); if (value != null) { System.out.println("attribute value:" + value.toLocaleString()); } } } } }
相关文章推荐
- Java笔记——利用反射机制获取成员变量及成员方法
- java中的反射机制,以及如何通过反射获取一个类的构造方法 ,成员变量,方法,详细。。
- JAVA之通过反射遍历JavaBean成员变量和方法
- java利用反射来调用一个类的私有方法和成员变量
- java 使用反射机制来获取私有方法和成员变量
- java中利用反射机制得到一个类的所有构造方法,成员方法机器参数的列表
- 类反射学习(三) JAVA如何利用类反射调用普通函数、访问成员成员变量
- 黑马程序员--Java基础加强--16.利用反射操作泛型V【通过Constructor反射解析泛型构造方法】【通过Field反射解析泛型成员变量】【个人总结】
- 【转载】JAVA利用反射机制访问private成员和方法
- 利用反射机制编写一个程序,这个程序能把类中所有的成员变量赋值,并把操作信息输出到控制台。
- java 反射机制 读取私有成员变量
- 利用反射机制操作私有成员变量(private修饰的变量)
- 利用反射机制,遍历POJO对象的各个字段名及属性
- java中的反射机制——如何访问私有成员的私有方法
- Java反射高级应用--利用反射调用类的私有方法修改私有方法值,以及替换Java的类成员数据
- (Java)利用反射动态调用类成员
- java中利用反射机制实现调用给定为字符串的方法名
- C# 利用反射,遍历获得一个类的所有属性名,方法名,成员名.
- JAVA 反射机制 获得 private 变量
- Java反射高级应用--利用反射调用类的私有方法修改私有方法值,以及替换Java的类成员数据