Si tengo un nulo Boolean b
, puedo hacer la siguiente comparación en Java:
Boolean b = ...;
if (b != null && b) {
/* Do something */
} else {
/* Do something else */
}
En Kotlin, puedo lograr lo mismo usando el !!
operador:
val b: Boolean? = ...
if (b != null && b!!) {
/* Do something */
} else {
/* Do something else */
}
Sin embargo, el uso de me !!
parece un poco incompleto, eludiendo el sistema de seguridad nulo.
¿Hay un enfoque más elegante para esto?
Editar Parece que me sobreexpliqué un poco. Para las variables locales, como muestra Banthar , funciona. Sin embargo, mi booleano b
es en realidad una "propiedad con un campo de respaldo" (todavía no estoy al tanto de lo que esto impone). Este es el resultado:
b
puede ser null
y una de las características de Kotlin es Null Safety , que proporciona errores de compilación al intentar evaluar referencias anulables. Por lo tanto, usar plain b
da un error de compilación :)
b != nil
captará eso antes de comprobar el lado derecho?
val r = b?doSomething() ?: doSomethingElse()
debería funcionar.
!!b
y no simplementeb
? (No estoy tan familiarizado con Kotlin, solo curiosidades)