質問は簡単です、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
と同様に、呼び出し時に評価されます。 。しかし、IIf
と正確に一致する組み込みのJava言語機能はありません。
public static <T> T iif(boolean test, T ifTrue, T ifFalse) {
return test ? ifTrue : ifFalse;
}
(ifTrue
引数とifFalse
引数は、三項演算子を使用して、Javaで同じ型である必要があることに注意してくださいまたはこの一般的な代替手段を使用します。)
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になります。どちらをしたいのか自問してみてください。