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.  
    }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM