Explique ce qu'est la sécurité nulle dans le langage Kotlin.
sobes.tech IA
Réponse de l'IA
La sécurité nulle — c'est une fonctionnalité du langage Kotlin qui empêche les erreurs liées aux références null. Elle est réalisée en créant deux types de références : nullable (qui permet null) et non-nullable (qui ne permet pas null).
Les types non-nullables sont déclarés comme d'habitude :
var nonNullableString: String = "Hello" // Ne peut pas être null
Les types nullable sont déclarés en utilisant le symbole ? après le nom du type :
var nullableString: String? = "Hello" // Peut être null
nullableString = null
Kotlin exige une gestion explicite des types nullable, évitant d'accéder directement à leurs membres sans vérification préalable de null. Pour cela, il fournit les mécanismes suivants :
-
Opérateur d'appel sécurisé (
?.) : Appelle une méthode ou accède à une propriété uniquement si l'objet n'est pasnull. Sinon, retournenull.val length = nullableString?.length // length sera Int? ou null -
Opérateur Elvis (
?:) : Fournit une valeur par défaut si l'expression à gauche de l'opérateur estnull.val nonNullLength = nullableString?.length ?: 0 // nonNullLength sera Int, 0 si nullableString est null -
Opérateur de assertion de non-null (
!!) : Convertit un type nullable en non-nullable. Si la valeur estnull, une exceptionNullPointerExceptionest levée. Utilisé lorsque le développeur est sûr que la valeur n'est pasnull.val sureLength = nullableString!!.length // Lancerait NullPointerException si nullableString est null -
Vérifications avec if : Vérification traditionnelle de
nullavecif. Le compilateur effectue une conversion intelligente (smart cast) du type nullable en non-nullable à l'intérieur du blocif, si la vérification passe.if (nullableString != null) { val length = nullableString.length // Ici nullableString est traité comme String }
Ces mécanismes permettent de gérer explicitement les situations où une variable peut être null, réduisant considérablement la probabilité d'une NullPointerException à l'exécution.