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...

couv_RIKOT.png

Découvrez 

le livre :

Aussi inclus dans nos :

Précédent
Indiquer des éléments nullables
Suivant
En résumé