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

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://www.walkerjava.com/thread-740-1-1.html
  • 6
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值