2014-03-07 42 views
3

是否有任何檢查對象的所有元素(以及它們的元素)是否爲空的快捷方式。例如,我想檢查一個國家對象(及其城市和它的街道)是否爲空?我不想像他們一樣逐一檢查他們;如何檢查對象中的所有非原始元素是否爲空

country == null || country.city == null || country.city.street == null 


public class Country{ 

    City city; 
    .... 

} 

public class City{ 

    Street street; 
    .... 
} 

public class Street{ 
    .... 
} 
+1

使用'=='運算符。準確地說'東西==空' – Astrobleme

+7

不,沒有捷徑。這是你的工作來實現這個邏輯。 –

+1

也許你必須編寫自己的方法來檢查所有並相應地返回true/false。 – Jay

回答

1

沒有捷徑:您必須遞歸瀏覽您的實例並檢查其字段。您可以使用How to list all properties exposed by a Java class and its ancestors in Eclipse?中顯示的瀏覽器的自定義版本。無論如何,如果你正在使用深奧的遺留代碼,那麼這種方法會有意義,而如果你正在編寫新類,那麼最好在工廠方法的構造函數中強制執行所有非空值。

+0

你必須遞歸瀏覽?我想當你必須這樣做時,答案已經很清楚 - 並非所有包含的引用都是空的。 – Ingo

+0

它們可能在第二級爲空,依此類推:) – robermann

+1

但是,您開始使用的對象必須至少有一個非空引用,因此該檢查可以返回false。 – Ingo