Sobes.tech
Junior

Was passiert, wenn man auf ein nullable-Feld eines Objekts in Kotlin zugreift?

sobes.tech KI

Antwort von AI

Wenn auf ein nullable-Feld eines Objekts zugegriffen wird, ohne auf null zu prüfen, tritt eine NullPointerException (NPE) auf.

Um sicheren Zugriff zu gewährleisten, können die folgenden Ansätze verwendet werden:

  1. Sicherer Aufruf-Operator (?.): Gibt null zurück, wenn das Objekt null ist, sonst führt es den Aufruf aus.

    // Angenommen, user? ist ein User?
    val userName: String? = user?.name
    
  2. Nicht-Null-Assertion-Operator (!!): Bestätigt explizit, dass das Objekt nicht null ist. Wenn doch, wird eine NullPointerException ausgelöst.

    // Bewusst verwenden, kann zu NPE führen
    val userName: String = user!!.name
    
  3. Elvis-Operator (?:): Bietet einen Standardwert, wenn das Objekt links vom Operator ?: null ist.

    val userName: String = user?.name ?: "Unbekannter Benutzer"
    
  4. if- oder when-Blöcke: Explizite null-Prüfung.

    if (user != null) {
        val userName = user.name
    } else {
        // Behandlung des Falls, dass user `null` ist
    }
    
  5. Funktionen let, run, apply, with mit sicherem Aufruf:

    user?.let {
        // `it` innerhalb dieses Blocks ist ein nicht-nullbarer `User`
        val userName = it.name
    }
    

Die Wahl hängt von der Programmlogik und dem gewünschten Verhalten im Fall eines null-Objekts ab. Es wird empfohlen, den sicheren Aufruf-Operator (?.) oder den Elvis-Operator (?:) zu verwenden, um NPE zu vermeiden. Der !!-Operator sollte mit Vorsicht eingesetzt werden.