方法使用了这俩个包下的 field 和method

import java.lang.reflect.Field;

import java.lang.reflect.Method;


[java] view plaincopy

  1. public static void getObjectValue(Object object) throws Exception {  

  2.         //我们项目的所有实体类都继承BaseDomain (所有实体基类:该类只是串行化一下)  

  3.         //不需要的自己去掉即可  

  4.         if (object != null && object instanceof BaseDomain) {//if (object!=null )  ----begin  

  5.             // 拿到该类  

  6.             Class<?> clz = object.getClass();  

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

  8.             Field[] fields = clz.getDeclaredFields();  

  9.   

  10.             for (Field field : fields) {// --for() begin  

  11.                 System.out.println(field.getGenericType());//打印该类的所有属性类型  

  12.   

  13.                 // 如果类型是String  

  14.                 if (field.getGenericType().toString().equals(  

  15.                         "class java.lang.String")) { // 如果type是类类型,则前面包含"class ",后面跟类名  

  16.                     // 拿到该属性的gettet方法  

  17.                     /** 

  18.                      * 这里需要说明一下:他是根据拼凑的字符来找你写的getter方法的 

  19.                      * 在Boolean值的时候是isXXX(默认使用ide生成getter的都是isXXX) 

  20.                      * 如果出现NoSuchMethod异常 就说明它找不到那个gettet方法 需要做个规范 

  21.                      */  

  22.                     Method m = (Method) object.getClass().getMethod(  

  23.                             "get" + getMethodName(field.getName()));  

  24.   

  25.                     String val = (String) m.invoke(object);// 调用getter方法获取属性值  

  26.                     if (val != null) {  

  27.                         System.out.println("String type:" + val);  

  28.                     }  

  29.   

  30.                 }  

  31.   

  32.                 // 如果类型是Integer  

  33.                 if (field.getGenericType().toString().equals(  

  34.                         "class java.lang.Integer")) {  

  35.                     Method m = (Method) object.getClass().getMethod(  

  36.                             "get" + getMethodName(field.getName()));  

  37.                     Integer val = (Integer) m.invoke(object);  

  38.                     if (val != null) {  

  39.                         System.out.println("Integer type:" + val);  

  40.                     }  

  41.   

  42.                 }  

  43.   

  44.                 // 如果类型是Double  

  45.                 if (field.getGenericType().toString().equals(  

  46.                         "class java.lang.Double")) {  

  47.                     Method m = (Method) object.getClass().getMethod(  

  48.                             "get" + getMethodName(field.getName()));  

  49.                     Double val = (Double) m.invoke(object);  

  50.                     if (val != null) {  

  51.                         System.out.println("Double type:" + val);  

  52.                     }  

  53.   

  54.                 }  

  55.   

  56.                 // 如果类型是Boolean 是封装类  

  57.                 if (field.getGenericType().toString().equals(  

  58.                         "class java.lang.Boolean")) {  

  59.                     Method m = (Method) object.getClass().getMethod(  

  60.                             field.getName());  

  61.                     Boolean val = (Boolean) m.invoke(object);  

  62.                     if (val != null) {  

  63.                         System.out.println("Boolean type:" + val);  

  64.                     }  

  65.   

  66.                 }  

  67.   

  68.                 // 如果类型是boolean 基本数据类型不一样 这里有点说名如果定义名是 isXXX的 那就全都是isXXX的  

  69.                 // 反射找不到getter的具体名  

  70.                 if (field.getGenericType().toString().equals("boolean")) {  

  71.                     Method m = (Method) object.getClass().getMethod(  

  72.                             field.getName());  

  73.                     Boolean val = (Boolean) m.invoke(object);  

  74.                     if (val != null) {  

  75.                         System.out.println("boolean type:" + val);  

  76.                     }  

  77.   

  78.                 }  

  79.                 // 如果类型是Date  

  80.                 if (field.getGenericType().toString().equals(  

  81.                         "class java.util.Date")) {  

  82.                     Method m = (Method) object.getClass().getMethod(  

  83.                             "get" + getMethodName(field.getName()));  

  84.                     Date val = (Date) m.invoke(object);  

  85.                     if (val != null) {  

  86.                         System.out.println("Date type:" + val);  

  87.                     }  

  88.   

  89.                 }  

  90.                 // 如果类型是Short  

  91.                 if (field.getGenericType().toString().equals(  

  92.                         "class java.lang.Short")) {  

  93.                     Method m = (Method) object.getClass().getMethod(  

  94.                             "get" + getMethodName(field.getName()));  

  95.                     Short val = (Short) m.invoke(object);  

  96.                     if (val != null) {  

  97.                         System.out.println("Short type:" + val);  

  98.                     }  

  99.   

  100.                 }  

  101.                 // 如果还需要其他的类型请自己做扩展  

  102.   

  103.             }//for() --end  

  104.               

  105.         }//if (object!=null )  ----end  

  106.     }  

  107.   

  108.     // 把一个字符串的第一个字母大写、效率是最高的、  

  109.     private static String getMethodName(String fildeName) throws Exception{  

  110.         byte[] items = fildeName.getBytes();  

  111.         items[0] = (byte) ((char) items[0] - 'a' + 'A');  

  112.         return new String(items);  

  113.     }