Java Equivalente alla funzione IIF
-
11-10-2019 - |
Domanda
La questione è semplice, c'è un equivalente funzionale del famoso IIF in java?
Ad esempio:
IIf (vData = "S", True, False)
Grazie in anticipo.
Soluzione
vData.equals("S") ? true : false
o in questo caso particolare ovviamente uno potrebbe semplicemente scrivere
vData.equals("S")
Altri suggerimenti
Si, il ternario op ? :
vData.equals("S") ? true : false
La differenza principale tra l'operatore ternario Java e IIf
è che valuta IIf
sia il valore restituito e il valore unreturned, mentre l'operatore ternario cortocircuiti e valuta solo il valore restituito. Se non ci sono effetti collaterali per la valutazione, i due non sono equivalenti.
È possibile, naturalmente, reimplementare IIf
come un metodo Java statico. In questo caso, entrambi i parametri saranno valutati in fase di chiamata, proprio come con IIf
. Ma non v'è incorporato caratteristica del linguaggio Java che equivale esattamente a IIf
.
public static <T> T iif(boolean test, T ifTrue, T ifFalse) {
return test ? ifTrue : ifFalse;
}
(Si noti che le ifTrue
e ifFalse
argomenti deve essere dello stesso tipo in Java, sia utilizzando l'operatore ternario o usando questo generico alternativa.)
se è la stessa della logica se e solo se.
boolean result;
if (vData.equals("S"))
result = true;
else
result = false;
o
boolean result = vData.equals("S") ? true : false;
o
boolean result = vData.equals("S");
EDIT: Tuttavia la sua molto probabile non è necessario una variabile invece si può agire sul risultato. per es.
if (vData.equals("S")) {
// do something
} else {
// do something else
}
A proposito può essere considerata una buona pratica per l'uso
if ("S".equals(vData)) {
L'essere differenza che è vData è nullo il primo esempio sarà un'eccezione mentre il secondo sarà falso. Dovresti chiederti che si preferisce che accada.