質問は単純です、Javaで有名なiifの機能的な同等物がありますか?
例えば:
IIf (vData = "S", True, False)
前もって感謝します。
質問は単純です、Javaで有名なiifの機能的な同等物がありますか?
例えば:
IIf (vData = "S", True, False)
前もって感謝します。
vData.equals("S") ? true : false
またはこの特定のケースでは、明らかに1つだけ書くことができます
vData.equals("S")
ええ、三項演算子? :
vData.equals("S") ? true : false
Java 三項演算子 と の主な違いは、返された値と返されない値の両方IIf
をIIf
評価するのに対し、三項演算子は返された値のみを短絡して評価することです。評価に副作用がある場合、この 2 つは等価ではありません。
IIf
もちろん、静的 Java メソッドとして再実装することもできます。その場合、 と同様に、両方のパラメーターが呼び出し時に評価されますIIf
。しかし、Java 言語には組み込みの Java 言語機能としてまったく同じものはありませんIIf
。
public static <T> T iif(boolean test, T ifTrue, T ifFalse) {
return test ? ifTrue : ifFalse;
}
(三項演算子を使用するか、この一般的な代替手段を使用して、 Java では引数ifTrue
とifFalse
引数が同じ型でなければならないことに注意してください。)
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であるということです。最初の例では例外がスローされますが、2番目の例ではfalseになります。どちらをしたいのか自問してみてください。