Sobes.tech
Junior

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 :

  1. Opérateur d’appel sécurisé (?.) : Retourne null si l’objet est null, sinon effectue l’appel.

    // Supposons que user? est un User?
    val userName: String? = user?.name
    
  2. Opérateur de non-null assertion (!!) : Confirme explicitement que l’objet n’est pas null. Si c’est le cas, une NullPointerException est levée.

    // À utiliser consciemment, peut conduire à une NPE
    val userName: String = user!!.name
    
  3. Opérateur Elvis (?:) : Fournit une valeur par défaut si l’objet à gauche de l’opérateur ?: est null.

    val userName: String = user?.name ?: "Utilisateur inconnu"
    
  4. Blocs if ou when : Vérification explicite de null.

    if (user != null) {
        val userName = user.name
    } else {
        // Traitement du cas où user est null
    }
    
  5. Fonctions let, run, apply, with avec 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.