Que se passe-t-il si vous accédez à un champ nullable d'un objet en Kotlin?
sobes.tech IA
Réponse de l'IA
Si vous accédez à un champ nullable d’un objet sans vérifier s’il est null, une exception NullPointerException (NPE) sera levée.
Pour un accès sécurisé, vous pouvez utiliser les approches suivantes :
-
Opérateur d’appel sécurisé (
?.) : Retournenullsi l’objet estnull, sinon effectue l’appel.// Supposons que user? est un User? val userName: String? = user?.name -
Opérateur de non-null assertion (
!!) : Confirme explicitement que l’objet n’est pasnull. Si c’est le cas, uneNullPointerExceptionest levée.// À utiliser consciemment, peut conduire à une NPE val userName: String = user!!.name -
Opérateur Elvis (
?:) : Fournit une valeur par défaut si l’objet à gauche de l’opérateur?:estnull.val userName: String = user?.name ?: "Utilisateur inconnu" -
Blocs
ifouwhen: Vérification explicite denull.if (user != null) { val userName = user.name } else { // Traitement du cas où user est null } -
Fonctions
let,run,apply,withavec appel sécurisé:user?.let { // `it` dans ce bloc est un `User` non nul val userName = it.name }
Le choix de l’approche dépend de la logique du programme et du comportement souhaité en cas d’objet null. Il est généralement recommandé d’utiliser l’opérateur d’appel sécurisé (?.) ou l’opérateur Elvis (?:) pour éviter la NPE. L’opérateur !! doit être utilisé avec prudence.