2013-03-12 116 views
0

我不確定這是什麼,所以很難查找它,如果我告訴你我想要做什麼,這是最好的。條件變量?

我要創造各種

String fileName = (if (this.filename != null) { return this.filename; } 
        else { return "default value"; }); 

這的condional變量應該是什麼,我試圖做的非常清楚。我想使用某種條件來設置基於另一個變量輸入的變量,在這種情況下是否等於null。

+3

查找三元運算符。 – 2013-03-12 03:35:16

+0

是的,這是我正在尋找。謝謝! – DerekE 2013-03-12 03:36:21

+0

[三元運算符是如何工作的]可能的重複?(http://stackoverflow.com/questions/463155/how-does-the-ternary-operator-work) – 2013-03-12 03:36:40

回答

7

使用三元運算符。在我看來,這是defensive programming中的策略之一。

String fileName = (this.filename != null? this.filename : "default value"); 
+0

哈哈。我們的答案完全一樣:P – 2013-03-12 03:36:41

+0

我的網絡速度很慢。道歉:P – Geros 2013-03-12 03:37:12

+0

順便說一句,我看到你先發布。 :P – 2013-03-12 03:37:31

5
String fileName = this.filename != null ? this.filename : "default value"; 
0

您可以使用ternary operatorboolean expression ? value1 : value2

String fileName = fileName == null ? "Default value" : this.filename; 
1

,或者更冗長,但(可能)更容易理解

String aFilename; 
if (this.filename != null) 
    aFilename = this.filename; 
else 
    aFilename = "Default Value"; 
return aFilename; 

我喜歡Careal的代碼,但情況因人而異。有些人找到了?操作複雜(特別是在凌亂的情況下)

此外,當用調試器跨步時,此代碼將更容易看到發生了什麼。

+1

我想省線,三元操作符是我在找的,謝謝你的回答,儘管如此:D – DerekE 2013-03-12 03:38:45

+1

@DerekE:你用多少錢支付每一行?節省線時,你真的節省多少錢?如果你犧牲可讀性,並且稍後有一個困難的調試,那麼你實際上並沒有保存任何東西。 1+ – 2013-03-12 03:39:39

+0

感謝您的支持。這種技術的一個小優點是,當你使用調試器時,通常更容易看到發生了什麼。在複雜情況下非常有用。 – user949300 2013-03-12 03:43:30