package com.walkerjava.test;

import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Date;

/***
* 遍历实体类的属性和数据类型以及属性值
*
* @author LiBaozhen
* @date 2013-1-4 上午10:25:02
* @company
* @version v1.3
* @see 相关类
* @since 相关/版本
*/
public class ReflectTest {
public static void reflectTest(Object model) throws NoSuchMethodException,
IllegalAccessException, IllegalArgumentException,
InvocationTargetException {
// 获取实体类的所有属性,返回Field数组
Field[] field = model.getClass().getDeclaredFields();
// 遍历所有属性
for (int j = 0; j < field.length; j++) {
// 获取属性的名字
String name = field[j].getName();
// 将属性的首字符大写,方便构造get,set方法
name = name.substring(0, 1).toUpperCase() + name.substring(1);
// 获取属性的类型
String type = field[j].getGenericType().toString();
// 如果type是类类型,则前面包含"class ",后面跟类名
System.out.println("属性为:" + name);
if (type.equals("class java.lang.String")) {
Method m = model.getClass().getMethod("get" + name);
// 调用getter方法获取属性值
String value = (String) m.invoke(model);
System.out.println("数据类型为:String");
if (value != null) {
System.out.println("属性值为:" + value);
} else {
System.out.println("属性值为:空");
}
}
if (type.equals("class java.lang.Integer")) {
Method m = model.getClass().getMethod("get" + name);
Integer value = (Integer) m.invoke(model);
System.out.println("数据类型为:Integer");
if (value != null) {
System.out.println("属性值为:" + value);
} else {
System.out.println("属性值为:空");
}
}
if (type.equals("class java.lang.Short")) {
Method m = model.getClass().getMethod("get" + name);
Short value = (Short) m.invoke(model);
System.out.println("数据类型为:Short");
if (value != null) {
System.out.println("属性值为:" + value);
} else {
System.out.println("属性值为:空");
}
}
if (type.equals("class java.lang.Double")) {
Method m = model.getClass().getMethod("get" + name);
Double value = (Double) m.invoke(model);
System.out.println("数据类型为:Double");
if (value != null) {
System.out.println("属性值为:" + value);
} else {
System.out.println("属性值为:空");
}
}
if (type.equals("class java.lang.Boolean")) {
Method m = model.getClass().getMethod("get" + name);
Boolean value = (Boolean) m.invoke(model);
System.out.println("数据类型为:Boolean");
if (value != null) {
System.out.println("属性值为:" + value);
} else {
System.out.println("属性值为:空");
}
}
if (type.equals("class java.util.Date")) {
Method m = model.getClass().getMethod("get" + name);
Date value = (Date) m.invoke(model);
System.out.println("数据类型为:Date");
if (value != null) {
System.out.println("属性值为:" + value);
} else {
System.out.println("属性值为:空");
}
}
}
}
}

 

  1. package com.walkerjava.test;
  2.  
     
  3.  

    import java.lang.reflect.Field;
  4.  

    import java.lang.reflect.InvocationTargetException;
  5.  

    import java.lang.reflect.Method;
  6.  

    import java.util.Date;
  7.  
     
  8.  

    /***
  9.  

    * 遍历实体类的属性和数据类型以及属性值
  10.  

    *
  11.  

    * @author LiBaozhen
  12.  

    * @date 2013-1-4 上午10:25:02
  13.  

    * @company
  14.  

    * @version v1.3
  15.  

    * @see 相关类
  16.  

    * @since 相关/版本
  17.  

    */
  18.  

    public class ReflectTest {
  19.  

    public static void reflectTest(Object model) throws NoSuchMethodException,
  20.  

    IllegalAccessException, IllegalArgumentException,
  21.  

    InvocationTargetException {
  22.  

    // 获取实体类的所有属性,返回Field数组
  23.  

    Field[] field = model.getClass().getDeclaredFields();
  24.  

    // 遍历所有属性
  25.  

    for (int j = 0; j < field.length; j++) {
  26.  

    // 获取属性的名字
  27.  

    String name = field[j].getName();
  28.  

    // 将属性的首字符大写,方便构造get,set方法
  29.  

    name = name.substring(0, 1).toUpperCase() + name.substring(1);
  30.  

    // 获取属性的类型
  31.  

    String type = field[j].getGenericType().toString();
  32.  

    // 如果type是类类型,则前面包含"class ",后面跟类名
  33.  

    System.out.println("属性为:" + name);
  34.  

    if (type.equals("class java.lang.String")) {
  35.  

    Method m = model.getClass().getMethod("get" + name);
  36.  

    // 调用getter方法获取属性值
  37.  

    String value = (String) m.invoke(model);
  38.  

    System.out.println("数据类型为:String");
  39.  

    if (value != null) {
  40.  

    System.out.println("属性值为:" + value);
  41.  

    } else {
  42.  

    System.out.println("属性值为:空");
  43.  

    }
  44.  

    }
  45.  

    if (type.equals("class java.lang.Integer")) {
  46.  

    Method m = model.getClass().getMethod("get" + name);
  47.  

    Integer value = (Integer) m.invoke(model);
  48.  

    System.out.println("数据类型为:Integer");
  49.  

    if (value != null) {
  50.  

    System.out.println("属性值为:" + value);
  51.  

    } else {
  52.  

    System.out.println("属性值为:空");
  53.  

    }
  54.  

    }
  55.  

    if (type.equals("class java.lang.Short")) {
  56.  

    Method m = model.getClass().getMethod("get" + name);
  57.  

    Short value = (Short) m.invoke(model);
  58.  

    System.out.println("数据类型为:Short");
  59.  

    if (value != null) {
  60.  

    System.out.println("属性值为:" + value);
  61.  

    } else {
  62.  

    System.out.println("属性值为:空");
  63.  

    }
  64.  

    }
  65.  

    if (type.equals("class java.lang.Double")) {
  66.  

    Method m = model.getClass().getMethod("get" + name);
  67.  

    Double value = (Double) m.invoke(model);
  68.  

    System.out.println("数据类型为:Double");
  69.  

    if (value != null) {
  70.  

    System.out.println("属性值为:" + value);
  71.  

    } else {
  72.  

    System.out.println("属性值为:空");
  73.  

    }
  74.  

    }
  75.  

    if (type.equals("class java.lang.Boolean")) {
  76.  

    Method m = model.getClass().getMethod("get" + name);
  77.  

    Boolean value = (Boolean) m.invoke(model);
  78.  

    System.out.println("数据类型为:Boolean");
  79.  

    if (value != null) {
  80.  

    System.out.println("属性值为:" + value);
  81.  

    } else {
  82.  

    System.out.println("属性值为:空");
  83.  

    }
  84.  

    }
  85.  

    if (type.equals("class java.util.Date")) {
  86.  

    Method m = model.getClass().getMethod("get" + name);
  87.  

    Date value = (Date) m.invoke(model);
  88.  

    System.out.println("数据类型为:Date");
  89.  

    if (value != null) {
  90.  

    System.out.println("属性值为:" + value);
  91.  

    } else {
  92.  

    System.out.println("属性值为:空");
  93.  

    }
  94.  

    }
  95.  

    }
  96.  

    }
  97.  

    }