Sobes.tech
Junior

Was sind 'nullable'-Typen in Kotlin und wie funktionieren sie?

sobes.tech KI

Antwort von AI

Nullable-Typen in Kotlin sind Typen, die sowohl einen Wert als auch null enthalten können. Sie werden explizit durch das Symbol ? nach dem Typnamen gekennzeichnet.

Das Funktionsprinzip basiert auf dem Kotlin-Typensystem, das NullPointerException während der Kompilierung verhindert. Der Compiler erfordert eine explizite Überprüfung auf null, bevor auf die Mitglieder eines nullable-Objekts zugegriffen wird.

Die wichtigsten Methoden, um sicher mit nullable-Typen zu arbeiten:

  • null-Prüfung mit if:

    fun printLength(str: String?) {
        if (str != null) {
            println(str.length) // Sicherer Aufruf nach null-Prüfung
        } else {
            println("String ist null")
        }
    }
    
  • Sicherer Aufruf-Operator (?.): Gibt null zurück, wenn das Objekt null ist, sonst das Ergebnis des Aufrufs.

    val safeLength: Int? = str?.length // Wenn str null ist, ist safeLength null
    
  • Elvis-Operator (?:): Ermöglicht die Angabe eines Standardwerts, falls der Ausdruck links vom Operator null ist.

    val lengthOrDefault: Int = str?.length ?: 0 // Wenn str null ist, ist lengthOrDefault 0
    
  • Nicht-null-Affirmationsoperator (!!): Wandelt einen nullable-Typ in einen non-null-Typ um. Sollte mit Vorsicht verwendet werden, da eine NullPointerException ausgelöst wird, wenn der Wert null ist.

    val assertedLength: Int = str!!.length // Löst NPE aus, wenn str null ist
    
  • Funktionen let/run/apply/also mit sicherem Aufruf:

    str?.let {
        // Der Code wird nur ausgeführt, wenn str nicht null ist
        println("Länge der Zeichenkette: ${it.length}")
    }
    

Das nullable-Typensystem von Kotlin erhöht die Sicherheit erheblich und reduziert die Wahrscheinlichkeit von NullPointerException im Vergleich zu Sprachen, in denen null ohne explizite Kennzeichnung jedem Typ zugewiesen werden kann.