2012-12-25 58 views
4

我有4 String變量:a,b,c,d。java中的短條件

我檢查其中一個是否爲null,然後是return false

,所以我做的:

if(a==null || b ==null || c ==null || d ==null) return false;

有這方面的任何短的路?

(我開始爲java)

+0

你想返回TRUE;如果這是不是這樣的? –

回答

4

如果你的方法是這樣的:

public boolean foo() { 
    String a = "a", b = "b", c = "c", d = "d"; 
    if(a == null || b == null || c == null || d == null) { 
     return false; 
    } 
    return true; 
} 

然後有一個辦法可以減少代碼。你可以這樣做,而不是:

public boolean foo() { 
    String a = "a", b = "b", c = "c", d = "d"; 
    return (a != null || b != null || c != null || d != null); 
} 

但是,如果你有多個字符串來進行測試,比如,10,甚至100,這種策略將需要更少的代碼將是把字符串到一個數組,並使用for-each loop。實際上,下面的方法可以用於任何類型的對象,而不僅僅是字符串

public boolean containsNullObject(Object... objs) { 
    // loop through each string 
    for(Object o : objs) { 
     if(s == null) { return false; } // return false if string is null 
    } 
    // if there was no instance of a null object, return true 
    return true; 
} 

如果你不知道的陣列的for-each循環是什麼,看看這些:

+0

是的,這個'公共布爾containsNullObject(Object ... objs)'是我需要的。謝謝。 – Sonrobby

3

不,你的解決方案是最簡單的可能。

0

-您正在使用Non-Short circuit OR來評估這種情況,我認爲這是最容易和最簡單的情況。

-所以你的解決方案就是它的需求。

1

似乎這可以用foreach循環和更優雅地表達vararg。它會讀得更好,並讓您輕鬆調試您的語句。

// method only returns true if all strings are non-null 
public boolean all(String... strings) { 
    for(String str : strings) { 
     if(null == str) { 
      return false; 
     } 
    } 
    return true; 
} 

然後,您可以調用它以這種方式:

return all(a, b, c, d); // will return false if any of these are null, otherwise true. 
0

if是多餘這裏,只需使用return !(a == null || b == null || c == null || d == null);