2011-09-04 45 views
2

考慮成員變量:我是否需要在OR條件的兩側檢查null?

String foo; 

我只是想打電話給setFoo如果foo以前沒有設置或當前是空的。

爲此,我不知道這是否是足夠的:

if(foo==null || foo.isEmpty()) { 

    setFoo(foo); 

} 

或者是更安全也檢查空的OR條件的另一面:

if(foo==null || (foo!=null && foo.isEmpty())) { 

    setFoo(foo); 

} 
+0

它的檢查更輕鬆,快捷,更有啓發性嗎? :-) – Scorpion

回答

0
if (foo == null || foo.isEmpty()) setFoo(foo); 

工作正常。在這種情況下,如果foo爲空,則將調用setFoo(foo)。如果foo不爲空,且foo爲空,則setFoo(foo)也將被調用。

3

不,第一個片段沒問題。

在Java(和如C或C++許多類似的語言),邏輯運算符&&||執行短路評價。在||的情況下,如果左側操作數是true,則右側操作數不會被評估。

11

if(foo==null || foo.isEmpty())就足夠了。

在邏輯或條件,如第一部分是假的Java將僅分析第二部分。

+0

在* logical * OR表達式中。在*按位*或者,他們都評估。 –

+0

是的,你是對的。更新它。 – jbx

+0

在一個側面說明如果烏拉圭回合將有幾個這樣的檢查,它始終是一個好主意,提取到一個方法這個..東西就StringUtils的的線.. – Scorpion

1

歡迎堆棧溢出

算像||&&在Java中是短路操作者,當第一部件是不夠的,確定該值 表達式的第二部分將只被檢查

那麼,if(foo==null || foo.isEmpty())就足夠了。

0

我覺得它更優雅的使用StringUtils.isBlank(foo)(Apache的公地琅),所以你不需要||在所有。

+0

但你必須有類路徑阿帕奇百科全書... –

+0

是,顯然。所以把它放在那裏,學習如何使用它,並寫出漂亮的代碼:)。 –

相關問題