Menu
Coddy logo textTech

Assertion auf Nicht-Null

Teil des Abschnitts Grundlagen der Kotlin-Journey von Coddy. Lektion 17 von 93.

Der Safe-Call-Operator und der Elvis-Operator behandeln Nullwerte problemlos, aber manchmal bist du dir an einer bestimmten Stelle in deinem Code absolut sicher, dass ein nullbarer Wert nicht null ist. Mit dem Nicht-null-Assertionsoperator !! kannst du Kotlin mitteilen: „Ich garantiere, dass dieser Wert nicht null ist.“

fun main() {
    val name: String? = "Alice"
    val length = name!!.length  // Konvertiert String? zu String
    println(length)  // Gibt aus: 5
}

Der Operator !! wandelt einen nullable Typ in sein nicht-nullbares Gegenstück um. Wenn der Wert jedoch tatsächlich null ist, stürzt dein Programm mit einer NullPointerException ab:

fun main() {
    val name: String? = null
    val length = name!!.length  // Stürzt hier ab!
}

Wann sollte man es verwenden: Verwende !! nur, wenn du über eine Logik verfügst, die garantiert, dass der Wert nicht null sein kann, der Compiler dies aber nicht überprüfen kann. In den meisten Fällen solltest du stattdessen sichere Aufrufe ?. oder den Elvis-Operator ?: bevorzugen. Die Nicht-null-Assertion sollte dein letzter Ausweg sein, nicht deine erste Wahl.

challenge icon

Aufgabe

Einfach

Schreibe eine Funktion getUppercaseLength, die einen Parameter text entgegennimmt und die Länge seiner Großbuchstabenversion zurückgibt.

Die Funktion erhält einen Nicht-null-Stringwert, aber der Parametertyp ist nullable (String?). Verwende den Not-null-Assertionsoperator !!, um ihn in einen nicht-nullbaren Typ umzuwandeln, verkette dann die Methode uppercase() und ermittle die length.

Parameter:

  • text (String?): Ein nullable String, der garantiert einen Wert enthält

Rückgabe: Die Länge der Großbuchstabenversion des Textes (Int)

Hinweis: Bei dieser Herausforderung ist die Eingabe immer ein gültiger String und niemals null. Dies simuliert ein Szenario, in dem du weißt, dass der Wert existiert, der Compiler dies jedoch nicht überprüfen kann.

Probier es selbst

fun getUppercaseLength(text: String?): Int {
    // Schreibe hier den Code
}
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Grundlagen

Übe selbstständig: Kotlin-Playground