Composer avec les éléments nullables
Nous pouvons sécuriser nos programmes en précisant que certains éléments peuvent être nullables. Mais pour des raisons de sécurité, un élément nullable ne peut pas être manipulé comme un élément non nullable.
Soit la classe Dog suivante :
data class Dog(val name: String)
{
fun bark()
{
println("Waf! Waf!")
}
}
Ce programme permet d’initialiser un objet de la classe Dog si un chiffre tiré au hasard est pair :
fun main()
{
var dog: Dog? = null
if (getRandomNumber() % 2 == 0)
{
dog = Dog("Doggo")
}
dog.bark()
}
/**
* Returns a random number between 1 and 100
*/
fun getRandomNumber(): Int =
(1..100).random() random
Si l’on essaie de compiler ce programme, il refuse de se lancer et affiche l’erreur suivante :
Only safe (?.) or non-null asserted (!!.) calls are allowed on
a nullable receiver of type Dog?
Cette erreur se produit sur la ligne dog.bark(). En effet, Kotlin n’est pas "content" car on tente d’appeler la méthode bark sur un objet dog qui potentiellement a pour valeur null. Ce n’est pas permis. On ne peut pas demander à un chien qui, finalement, n’existe pas, d’aboyer.
Dans...