2017-02-16 26 views
-3

我想不管比較Java中的所有類的值的類型,比如我有隔壁班:比較值不爲空或空任何級Java

public class Car { 

    private int windows; 

    private int doors; 

    private int drive; 

    private String model; 

    public int getWindows() { 
     return windows; 
    } 

    public void setWindows(int windows) { 
     this.windows = windows; 
    } 

    public int getDoors() { 
     return doors; 
    } 

    public void setDoors(int doors) { 
     this.doors = doors; 
    } 

    public int getDrive() { 
     return drive; 
    } 

    public void setDrive(int drive) { 
     this.drive = drive; 
    } 

    public String getModel() { 
     return model; 
    } 

    public void setModel(String model) { 
     this.model = model; 
    } 

} 

而這個其他:

public class Moto { 

    private String model; 

    private String color; 

    private int year; 

    public String getModel() { 
     return model; 
    } 

    public void setModel(String model) { 
     this.model = model; 
    } 

    public String getColor() { 
     return color; 
    } 

    public void setColor(String color) { 
     this.color = color; 
    } 

    public int getYear() { 
     return year; 
    } 

    public void setYear(int year) { 
     this.year = year; 
    } 

} 

,我想比較,如果不是這個班的空或空的屬性,例如:

if(Validator.myClass(objectValue)){ 

} 
else{ 

} 

類ValidadorË xample:

if(!field.getName().equals("") && field.getName() != null){ 

如何做到這一點:

public class Validador { 


     public static boolean myClass(Object obj){ 
      Class myClass = null; 
      String cla = obj.toString(); 
      int a = cla.indexOf("@"); 
      cla = cla.substring(0, a); 
      try { 
       myClass = Class.forName(cla); 
       Field[] fields = myClass.getDeclaredFields(); 
       int contador =0; 
       for (Field field : fields) { 
        System.out.println("Field type is: " + field.getType()); 
        System.out.println("Field name is: " + field.getName()); 
        if(!field.getName().equals("") && field.getName() != null){ 
         contador++; 
        } 
       } 
       log.info(contador); 
      } catch (Exception e) { 

      } 
      return true; 

     } 

} 

如果值不爲空或empity此屬性這條線不能比的?

我現在做以下列方式:

if(Nameclass != null && Nameclass.getNameAttributeA != null && !Nameclass.getNameAttributeA.equals(""){ 

}else{ 

} 

更新

比不上2目標,只有一個,但沒有關係類型的對象,例如:我有obejct Car.class我想比較這個類的所有或任何屬性,或者與其他對象(類)相同。

謝謝!

+0

說實話,問題並不清楚。你想比較上面的兩個對象嗎?你想傳遞一個對象到驗證器類並檢查每個屬性是否符合某些東西?很多選項.. – FrederikVH

+0

取決於您是否被允許更改這些類別。理想情況下,這些類將以某種方式進行設計,以便無法創建無效的實例。這可以通過例如移除setter並將所有屬性作爲參數傳遞給構造函數,以驗證它們並在無效時拋出IllegalArgumentException。但只要涉及ORM或序列化,這可能會變得困難。你能告訴我們更多關於這些類使用的上下文嗎? –

+0

不比較2個對象,只有一個,但不重要的類型對象,例如:我有obejct Car.class我想比較這個類的所有或任何屬性或做與其他對象(類)相同。 @FrederikVH – 5frags

回答

0

可以檢查和對象不爲null用下面的代碼的:

if(motoObject!=null) { 

} else { 

} 

不過你的問題不是那麼清楚。你能否添加更多細節?

+0

更新信息 – 5frags

0

你應該用類,例如類的車,你可以使用:

private Integer doors;//default is null 

您可以使用您的驗證方法是:

public static boolean validator(Object myObject) { 
     Field[] fields = myObject.getClass().getDeclaredFields(); 
     for (Field field : fields) { 
      try { 
       Object objectValue = field.get(myObject); 
       if (objectValue == null || objectValue.toString().length() == 0) { 
        System.out.println("null or empty field = '" + field.getName() + "' in : " + myObject.getClass().getCanonicalName()); 
        return false; //or you can throw a exception with a message, is better that return a boolean 
       } 
      } catch (IllegalArgumentException | IllegalAccessException ex) { 
       Logger.getLogger(MyClass.class.getName()).log(Level.SEVERE, "Something is wrong", ex); 
      } 
     } 
     return true; 
    } 

PD。對不起,我的英語,不太好