Se eu tiver um valor nulo Boolean b
, posso fazer a seguinte comparação em Java:
Boolean b = ...;
if (b != null && b) {
/* Do something */
} else {
/* Do something else */
}
No Kotlin, posso obter o mesmo usando o !!
operador:
val b: Boolean? = ...
if (b != null && b!!) {
/* Do something */
} else {
/* Do something else */
}
No entanto, o uso de me !!
parece um pouco superficial, contornando o sistema de segurança nulo.
Existe uma abordagem mais elegante para isso?
Editar Parece que eu simplifiquei um pouco demais. Para variáveis locais, como mostra Banthar , funciona. No entanto, meu booleano b
é na verdade uma "propriedade com um campo de apoio" (não estou realmente atualizado ainda sobre o que isso impõe). Este é o resultado:
b
pode ser null
e um dos recursos do Kotlin é o Null Safety , que fornece erros de compilação ao tentar avaliar referências anuláveis. Assim, usando simples b
dá um erro de compilação :)
b != nil
entenderá isso antes de verificar o lado direito?
val r = b?doSomething() ?: doSomethingElse()
deveria funcionar.
!!b
e não simplesmenteb
? (Eu não sou tão familiarizado com Kotlin, apenas curiosidades)