Se ho un nullable Boolean b
, posso fare il seguente confronto in Java:
Boolean b = ...;
if (b != null && b) {
/* Do something */
} else {
/* Do something else */
}
In Kotlin, posso ottenere lo stesso utilizzando l' !!
operatore:
val b: Boolean? = ...
if (b != null && b!!) {
/* Do something */
} else {
/* Do something else */
}
Tuttavia, l'uso di mi !!
sembra un po 'impreciso, aggirando il sistema di sicurezza nulla.
C'è un approccio più elegante per questo?
Modifica Sembra che ho semplificato un po '. Per le variabili locali, come mostra Banthar , funziona. Tuttavia, il mio booleano b
è in realtà una "proprietà con un campo di supporto" (non sono ancora al passo con ciò che questo impone). Questo è il risultato:
b
potrebbe essere null
e una delle funzionalità di Kotlin è Null Safety , che fornisce errori di compilazione quando si tenta di valutare riferimenti nullable. Pertanto, l'utilizzo di plain b
dà un errore di compilazione :)
b != nil
prendi prima di controllare il lato destro?
val r = b?doSomething() ?: doSomethingElse()
dovrebbe funzionare.
!!b
e non semplicementeb
? (Non ho molta familiarità con kotlin, solo curiosità)