zoukankan      html  css  js  c++  java
  • 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://blog.csdn.net/dongzhouzhou/article/details/8659836 

    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.  
      }
  • 相关阅读:
    聊聊 print 的前世今生
    在树莓派里搭建 Lighttpd 服务器
    如何重复执行一条命令直至运行成功?
    手把手教你Windows Linux双系统的安装与卸载
    你以为只有马云会灌鸡汤?Linux 命令行也会!
    Linux 下三种提高工作效率的文件处理技巧
    太高效了!玩了这么久的Linux,居然不知道这7个终端快捷键!
    Linux下分析bin文件的10种方法
    Linux下几个与磁盘空间和文件尺寸相关的命令
    如何让你的脚本可以在任意地方都可执行?
  • 原文地址:https://www.cnblogs.com/achengmu/p/10260670.html
Copyright © 2011-2022 走看看