1. 程式人生 > >java中遍歷實體類屬性和型別,屬性值

java中遍歷實體類屬性和型別,屬性值

[java] view plain copy print?在CODE上檢視程式碼片派生到我的程式碼片
  1. publicstaticvoid testReflect(Object model) throws NoSuchMethodException, IllegalAccessException, IllegalArgumentException, InvocationTargetException{  
  2.         Field[] field = model.getClass().getDeclaredFields();        //獲取實體類的所有屬性,返回Field陣列  
  3.         for(int j=0 ; j<field.length ; j++){     
    //遍歷所有屬性
  4.                 String name = field[j].getName();    //獲取屬性的名字
  5.                 System.out.println("attribute name:"+name);       
  6.                 name = name.substring(0,1).toUpperCase()+name.substring(1); //將屬性的首字元大寫,方便構造get,set方法
  7.                 String type = field[j].getGenericType().toString();    //獲取屬性的型別
  8.                 if(type.equals("class java.lang.String")){   //如果type是類型別,則前面包含"class ",後面跟類名
  9.                     Method m = model.getClass().getMethod("get"+name);  
  10.                     String value = (String) m.invoke(model);    //呼叫getter方法獲取屬性值
  11.                     if(value != null){  
  12.                         System.out.println("attribute value:"
    +value);  
  13.                     }  
  14.                 }  
  15.                 if(type.equals("class java.lang.Integer")){       
  16.                     Method m = model.getClass().getMethod("get"+name);  
  17.                     Integer value = (Integer) m.invoke(model);  
  18.                     if(value != null){  
  19.                         System.out.println("attribute value:"+value);  
  20.                     }  
  21.                 }  
  22.                 if(type.equals("class java.lang.Short")){       
  23.                     Method m = model.getClass().getMethod("get"+name);  
  24.                     Short value = (Short) m.invoke(model);  
  25.                     if(value != null){  
  26.                         System.out.println("attribute value:"+value);                    }  
  27.                 }         
  28.                 if(type.equals("class java.lang.Double")){       
  29.                     Method m = model.getClass().getMethod("get"+name);  
  30.                     Double value = (Double) m.invoke(model);  
  31.                     if(value != null){                      
  32.                         System.out.println("attribute value:"+value);    
  33.                     }  
  34.                 }                    
  35.                 if(type.equals("class java.lang.Boolean")){  
  36.                     Method m = model.getClass().getMethod("get"+name);      
  37.                     Boolean value = (Boolean) m.invoke(model);  
  38.                     if(value != null){                        
  39.                         System.out.println("attribute value:"+value);  
  40.                     }  
  41.                 }  
  42.                 if(type.equals("class java.util.Date")){  
  43.                     Method m = model.getClass().getMethod("get"+name);                      
  44.                     Date value = (Date) m.invoke(model);  
  45.                     if(value != null){  
  46.                         System.out.println("attribute value:"+value.toLocaleString());  
  47.                     }  
  48.                 }                  
  49.             }  
  50.     }  
public static void testReflect(Object model) throws NoSuchMethodException, IllegalAccessException, IllegalArgumentException, InvocationTargetException{
        Field[] field = model.getClass().getDeclaredFields();        //獲取實體類的所有屬性,返回Field陣列  
        for(int j=0 ; j<field.length ; j++){     //遍歷所有屬性
                String name = field[j].getName();    //獲取屬性的名字
                
                System.out.println("attribute name:"+name);     
                name = name.substring(0,1).toUpperCase()+name.substring(1); //將屬性的首字元大寫,方便構造get,set方法
                String type = field[j].getGenericType().toString();    //獲取屬性的型別
                if(type.equals("class java.lang.String")){   //如果type是類型別,則前面包含"class ",後面跟類名
                    Method m = model.getClass().getMethod("get"+name);
                    String value = (String) m.invoke(model);    //呼叫getter方法獲取屬性值
                    if(value != null){

                        System.out.println("attribute value:"+value);
                    }
                }
                if(type.equals("class java.lang.Integer")){     
                    Method m = model.getClass().getMethod("get"+name);
                    Integer value = (Integer) m.invoke(model);
                    if(value != null){
                        System.out.println("attribute value:"+value);
                    }
                }
                if(type.equals("class java.lang.Short")){     
                    Method m = model.getClass().getMethod("get"+name);
                    Short value = (Short) m.invoke(model);
                    if(value != null){
                        System.out.println("attribute value:"+value);                    }
                }       
                if(type.equals("class java.lang.Double")){     
                    Method m = model.getClass().getMethod("get"+name);
                    Double value = (Double) m.invoke(model);
                    if(value != null){                    
                        System.out.println("attribute value:"+value);  
                    }
                }                  
                if(type.equals("class java.lang.Boolean")){
                    Method m = model.getClass().getMethod("get"+name);    
                    Boolean value = (Boolean) m.invoke(model);
                    if(value != null){                      
                        System.out.println("attribute value:"+value);
                    }
                }
                if(type.equals("class java.util.Date")){
                    Method m = model.getClass().getMethod("get"+name);                    
                    Date value = (Date) m.invoke(model);
                    if(value != null){
                        System.out.println("attribute value:"+value.toLocaleString());
                    }
                }                
            }
    }