2013-03-12 117 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