java中循环遍历实体类的属性和数据类型以及属性值

时间:2022-06-13 11:31:15
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("属性值为:空");
}
}
}
}
}

  

http://blog.csdn.net/dongzhouzhou/article/details/8659836

  1. package com.walkerjava.test;
  2. import java.lang.reflect.Field;
  3. import java.lang.reflect.InvocationTargetException;
  4. import java.lang.reflect.Method;
  5. import java.util.Date;
  6. /***
  7. * 遍历实体类的属性和数据类型以及属性值
  8. *
  9. * @author LiBaozhen
  10. * @date 2013-1-4 上午10:25:02
  11. * @company
  12. * @version v1.3
  13. * @see 相关类
  14. * @since 相关/版本
  15. */
  16. public class ReflectTest {
  17. public static void reflectTest(Object model) throws NoSuchMethodException,
  18. IllegalAccessException, IllegalArgumentException,
  19. InvocationTargetException {
  20. // 获取实体类的所有属性,返回Field数组
  21. Field[] field = model.getClass().getDeclaredFields();
  22. // 遍历所有属性
  23. for (int j = 0; j < field.length; j++) {
  24. // 获取属性的名字
  25. String name = field[j].getName();
  26. // 将属性的首字符大写,方便构造get,set方法
  27. name = name.substring(0, 1).toUpperCase() + name.substring(1);
  28. // 获取属性的类型
  29. String type = field[j].getGenericType().toString();
  30. // 如果type是类类型,则前面包含"class ",后面跟类名
  31. System.out.println("属性为:" + name);
  32. if (type.equals("class java.lang.String")) {
  33. Method m = model.getClass().getMethod("get" + name);
  34. // 调用getter方法获取属性值
  35. String value = (String) m.invoke(model);
  36. System.out.println("数据类型为:String");
  37. if (value != null) {
  38. System.out.println("属性值为:" + value);
  39. } else {
  40. System.out.println("属性值为:空");
  41. }
  42. }
  43. if (type.equals("class java.lang.Integer")) {
  44. Method m = model.getClass().getMethod("get" + name);
  45. Integer value = (Integer) m.invoke(model);
  46. System.out.println("数据类型为:Integer");
  47. if (value != null) {
  48. System.out.println("属性值为:" + value);
  49. } else {
  50. System.out.println("属性值为:空");
  51. }
  52. }
  53. if (type.equals("class java.lang.Short")) {
  54. Method m = model.getClass().getMethod("get" + name);
  55. Short value = (Short) m.invoke(model);
  56. System.out.println("数据类型为:Short");
  57. if (value != null) {
  58. System.out.println("属性值为:" + value);
  59. } else {
  60. System.out.println("属性值为:空");
  61. }
  62. }
  63. if (type.equals("class java.lang.Double")) {
  64. Method m = model.getClass().getMethod("get" + name);
  65. Double value = (Double) m.invoke(model);
  66. System.out.println("数据类型为:Double");
  67. if (value != null) {
  68. System.out.println("属性值为:" + value);
  69. } else {
  70. System.out.println("属性值为:空");
  71. }
  72. }
  73. if (type.equals("class java.lang.Boolean")) {
  74. Method m = model.getClass().getMethod("get" + name);
  75. Boolean value = (Boolean) m.invoke(model);
  76. System.out.println("数据类型为:Boolean");
  77. if (value != null) {
  78. System.out.println("属性值为:" + value);
  79. } else {
  80. System.out.println("属性值为:空");
  81. }
  82. }
  83. if (type.equals("class java.util.Date")) {
  84. Method m = model.getClass().getMethod("get" + name);
  85. Date value = (Date) m.invoke(model);
  86. System.out.println("数据类型为:Date");
  87. if (value != null) {
  88. System.out.println("属性值为:" + value);
  89. } else {
  90. System.out.println("属性值为:空");
  91. }
  92. }
  93. }
  94. }
  95. }