这个问题很简单,在Java中有著名的IIF的功能吗?

例如:

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

提前致谢。

有帮助吗?

解决方案

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

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

vData.equals("S")

其他提示

是的,三元OP ? :

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

Java三元操作员和 IIf 就是它 IIf 评估 两个都 返回的值和未返回的值,而三元运算符短路并仅评估返回的值。如果对评估有副作用,则两者不等。

当然,您可以重新实现 IIf 作为静态Java方法。在这种情况下,这两个参数将在呼叫时间进行评估,就像 IIf. 。但是没有内置的Java语言功能完全等同于 IIf.

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

(请注意 ifTrueifFalse 参数 必须 使用三元算子或使用此通用替代方案,在Java中是相同类型的类型。)

如果与逻辑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是无效的,第一个示例将抛出异常,而第二个则将是错误的。您应该问自己,您希望发生哪种事情。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top