10

问题很简单,java 中是否存在与著名的 iif 等效的功能?

例如:

IIf (vData = "S", True, False)

提前致谢。

4

4 回答 4

25
vData.equals("S") ? true : false

或者在这种特殊情况下,显然可以写

vData.equals("S")
于 2011-01-13T20:38:33.430 回答
6

是的,三元运算? :

vData.equals("S") ? true : false
于 2011-01-13T20:38:10.780 回答
4

Java 三元运算符和 Java 三元运算符的主要区别在于IIf同时IIf计算返回值和未返回值,而三元运算符短路并仅计算返回值。如果评估有副作用,则两者是不等价的。

当然,您可以重新实现IIf为静态 Java 方法。在这种情况下,两个参数都将在调用时进行评估,就像IIf. 但是没有完全等同于IIf.

public static <T> T iif(boolean test, T ifTrue, T ifFalse) {
    return test ? ifTrue : ifFalse;
}

(请注意,在 Java 中, ifTrueandifFalse参数必须是相同的类型,要么使用三元运算符,要么使用此通用替代方案。)

于 2011-01-13T20:43:14.133 回答
2

if 与逻辑 iff 相同。

boolean result;
if (vData.equals("S"))
   result = true;
else
   result = false;

或者

boolean result = vData.equals("S") ? true : false;

或者

boolean result = vData.equals("S");

编辑:但是很可能您不需要变量,而是可以对结果采取行动。例如

if (vData.equals("S")) {
   // do something
} else {
   // do something else
}

顺便说一句,它可能被认为是使用的好习惯

 if ("S".equals(vData)) {

不同之处在于 vData 为 null,第一个示例将引发异常,而第二个示例将为 false。你应该问问自己,你更愿意发生什么。

于 2011-01-13T20:39:47.753 回答