2017-01-16 34 views
1

我有下面的代碼,我正在檢查兩個變量不空檢查。Handle!= null檢查兩個變量

if (userParameter != null || configurationParameter != null){ 
    add.userParameter(); 
    add.configurationParameter(); 
} 

有什麼辦法,我可以爲您在不null一個if條件像Java中if((userParameter or configurationParameter) != null)

+1

你試圖用這個來實現什麼? – Albjenow

+0

是啊問題不清楚 –

+3

沒有嚴格的相關性,但我認爲在你的代碼中應該有&&操作符。如果兩者都不爲空然後運行,我說得對嗎? – zubergu

回答

3

當你有兩個參數,你可以做的最多的就是創建一個返回取決於檢查truefalse的方法:

if (checkForNull(userParameter, configurationParameter)){ 
    add.userParameter(); 
    add.configurationParameter(); 
} 

private boolean checkForNull(Object... objects){ 
    for (Object obj : objects){ 
     if (obj == null){ 
      return true; 
     } 
    } 
    return false; 
} 

EDITED

由於@shmosel和@AxelH提出,使用可變參數將會更高效。感謝您的改進

+1

如果你要使用helper方法,不妨全力以赴:'boolean checkForNull(Object ... objects){for Object obj:objects)if(obj == null)return false;返回true; }' – shmosel

+1

相同的評論,使用可變參數使這種方式更有用。 (我剛剛在評論部分寫了這個) – AxelH

+2

你只會用這個檢查第一個參數。 'return true'應該在循環之後,當你確定沒有'null';) – AxelH

2

是的,有三元運營商?(條件運算符):

if (userParameter != null ? configurationParameter != null : false) { 

(注:其中的邏輯是從您的代碼不同,你可能要檢查,如果兩者不爲空)
但是,使用其他人正在使用的功能也許是一個好主意。

+1

這與'if(userParameter!= null && configurationParameter!= null){'一樣。作爲一個經驗法則,在三元操作中,你永遠不需要布爾文字。 – shmosel

+0

Nit:它的正確名稱是[*條件運算符*](https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.25),它是* a *三元操作符(目前是唯一的三元操作符)。 –

+0

@shmosel是的,我知道邏輯是不同的(請參閱我添加的註釋),因爲我認爲這是OP應該使用的。我完全同意這不應該用於真正的代碼中(參見我的最後一行)。 – alain

2

在某些情況下,您當前的代碼已經只會檢查一個條件,因爲||運算符會短路。這種情況下,如果條件userParameter != null爲真,則JVM甚至不會檢查其他條件。

除此之外,沒有辦法,據我所知在兩個獨立的可變因素在比較單一,以檢查null

6

沒有辦法比較在Java多 的事情(即用戶參數& configurationParameter)空(單)的東西。

但是你可以寫類似下面的方法,使用它時,你對空檢查多個值與|| : -

public boolean isNull(Object... args){ 
for(Object arg: args){ 
    if(arg==null) return true; 
} 
return false; 
} 
+2

爲什麼一個「字符串」? 「對象」效果更好 – AxelH

+0

我的方法只是一個提示。問題中沒有提到的參數類型,所以只是假定它們是String。 –

+1

那麼,在'null'檢查的情況下,類型並不重要,你不能在一個primitve上做到這一點,就是這樣。所以你可以是通用的;) – AxelH

0

您可以使用Binary Operator Check Here

,或者您可以使用ternary Operator

+0

這與'&&'或'||'不一樣 – Albjenow