2012-05-02 114 views
1

的空白變量我有一個POJO類檢查對象

class Foo{ 
String a 
String b 
. 
. 
// nearly 250 data members 
// all have getters and setter 

} 

現在,當我創建 類的對象如何檢查,在對象中的任何數據成員爲空

我使用下面的方法

public boolean clearBlank() 
{ 

    if(StringUtils.isBlank(this.getA())) 
     return true; 
    if(StringUtils.isBlank(this.getB())) 
     return true; 
    if(StringUtils.isBlank(this.getC())) 
     return true; 
    . 
    . 
    . 
    // similarly for all 250 data member 
    return false; 

} 

有沒有更好的方法通過調用所有250個getter對象來檢查?

+4

250場是一場災難。你應該分開你的課。 – artbristol

+1

如果您使用它們都具有相同的含義 - 那爲什麼不使用數組? –

+0

對於代表大型數據對象的Java類,這可能是一種非常合法的類,我見過很多這樣的類。我認爲這是一個公平的要求。 –

回答

7

是的,您可以使用Java反射遍歷對象的所有字段並獲取它們的值來進行比較。

像這樣:

public static boolean hasBlankVariables(Object obj) throws IllegalArgumentException, IllegalAccessException { 
    for (Field field : obj.getClass().getDeclaredFields()) { 
     if (!field.isAccessible()) { 
      field.setAccessible(true); 
     } 
     // Danger! 
     String str = (String) field.get(obj); 
     if (StringUtils.isBlank(str)) { 
      return true; 
     } 
    } 
    return false; 
} 
+0

如何實施 – Abhij

+1

@Abhishekj:鑑於弗朗西斯給了你一個寬泛的方向,你在這方面做了多少研究?你試過了什麼,問題在哪裏? –

+2

您可以輕鬆Google「Java反射」並找到指向API和許多示例的指針。這只是幾行代碼。 –