Java Equivalent to iif function

南笙酒味 提交于 2019-12-05 04:35:41
vData.equals("S") ? true : false

or in this particular case obviously one could just write

vData.equals("S")

Yeah, the ternary op ? :

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

The main difference between the Java ternary operator and IIf is that IIf evaluates both the returned value and the unreturned value, while the ternary operator short-circuits and evaluates only the value returned. If there are side-effects to the evaluation, the two are not equivalent.

You can, of course, reimplement IIf as a static Java method. In that case, both parameters will be evaluated at call time, just as with IIf. But there is no builtin Java language feature that equates exactly to IIf.

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

(Note that the ifTrue and ifFalse arguments must be of the same type in Java, either using the ternary operator or using this generic alternative.)

if is the same as the logical iff.

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

or

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

or

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

EDIT: However its quite likely you don't need a variable instead you can act on the result. e.g.

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

BTW it may be considered good practice to use

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

The difference being that is vData is null the first example will throw an exception whereas the second will be false. You should ask yourself which would you prefer to happen.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!