用Java反射机制遍历实体类的属性和类型_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > 用Java反射机制遍历实体类的属性和类型

用Java反射机制遍历实体类的属性和类型

 2013/10/28 15:58:06  krystal_0424  程序员俱乐部  我要评论(0)
  • 摘要:这个方法使用到了java.lang.reflect包的Field类,Method类。此方法遍历实体类所有属性,对于常用的java包装类类型和java.util.Date,输出其属性值,如果有其它类型,则需自己扩展。publicstaticvoidtestReflect(Objectmodel)throwsNoSuchMethodException,IllegalAccessException,IllegalArgumentException,InvocationTargetException
  • 标签:遍历 Java 反射 反射机制

? ? 这个方法使用到了java.lang.reflect包的Field类,Method类。

??? 此方法遍历实体类所有属性,对于常用的java包装类类型和java.util.Date,输出其属性值,如果有其它类型,则需自己扩展。

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);????????????????
??????????????? 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());
??????????????????? }
??????????????? }????????????????
??????????? }
??? }

发表评论
用户名: 匿名