Kotlin Academy · Lektion

Safe Call ?. und Elvis ?: im praktischen Code

Verketten Sie Safe Calls und stellen Sie mit dem Elvis-Operator Ersatzwerte bereit.

Lektion 2 von 413 Schritte

Safe Call ?. und Elvis ?: im praktischen Code ist eine kostenlose Kotlin Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Kotlin Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Kotlin Academy-Kurs umfasst insgesamt 4 Lektionen.

Zwei Operatoren mit großer Wirkung

Der Safe Call ?. ruft ein Member nur auf, wenn der Empfänger nicht null ist. Der Elvis-Operator ?: stellt einen Ersatzwert bereit, wenn die linke Seite null ist.

Grundlagen des Safe Calls

x?.member ergibt null, wenn x null ist; andernfalls greift der Ausdruck normal auf member zu.

fun main() {
    val name: String? = "Kotlin"
    val len: Int? = name?.length
    println(len) // 6
    val nope: String? = null
    println(nope?.length) // null
}

Grundlagen des Elvis-Operators

x ?: default gibt x zurück, wenn es nicht null ist, andernfalls den Wert default auf der rechten Seite.

fun main() {
    val name: String? = null
    val display = name ?: "Anonymous"
    println(display) // Anonymous
}

Safe Call und Elvis kombinieren

Ein häufiges Idiom: obj?.member ?: default – Wert auslesen oder auf einen Ersatzwert zurückgreifen.

fun main() {
    val name: String? = null
    val length = name?.length ?: 0
    println("length = $length") // 0
}

Safe Calls verketten

Verketten Sie ?. über mehrere Ebenen – der gesamte Ausdruck ergibt null, sobald ein Glied null ist.

class Address(val city: String?)
class User(val address: Address?)
fun main() {
    val u: User? = User(Address(null))
    val city = u?.address?.city ?: "Unknown"
    println(city) // Unknown
}

Elvis mit throw auf der rechten Seite

Die rechte Seite des Elvis-Operators kann jeder Ausdruck sein, auch throw – praktisch für Prüfungen auf erforderliche Werte.

fun loadConfig(path: String?): String {
    val p = path ?: throw IllegalArgumentException("path required")
    return "loaded $p"
}
fun main() {
    println(loadConfig("/etc/app"))
    // loadConfig(null) // throws
}

Safe Call mit Methoden

Safe Calls funktionieren mit jeder Methode, nicht nur beim Zugriff auf Eigenschaften.

fun main() {
    val raw: String? = "  hello  "
    val cleaned = raw?.trim()?.uppercase() ?: ""
    println(cleaned) // HELLO
}

Safe Call in Bedingungen

Sie können Safe Calls in Bedingungen verwenden. Kombinieren Sie sie mit dem Elvis-Operator, um Standardwerte für Boolean-Ausdrücke bereitzustellen.

fun main() {
    val name: String? = "Alice"
    if (name?.startsWith("A") == true) {
        println("Starts with A")
    }
}

Elvis mit return

Verwenden Sie Elvis mit return für Guard Clauses: Beenden Sie die Funktion frühzeitig, wenn ein erforderlicher Wert null ist.

fun process(input: String?) {
    val safe = input ?: return
    println("processing $safe")
}
fun main() {
    process("abc")
    process(null) // returns silently
}

Elvis mit continue/break

In Schleifen kann Elvis mit continue oder break kurz und bündig auf null reagieren.

fun main() {
    val items: List<String?> = listOf("a", null, "b", null, "c")
    for (item in items) {
        val v = item ?: continue
        print("$v ")
    }
    println() // a b c
}

Praxisbeispiel: Konfigurationssuche

Safe Call und Elvis lassen sich zu einer einzeiligen Anweisung kombinieren, die eine optionale Konfiguration mit einem Standardwert ausliest.

class Config(val timeoutMs: Int?, val host: String?)
fun main() {
    val cfg: Config? = Config(null, "prod.example.com")
    val timeout = cfg?.timeoutMs ?: 5000
    val host = cfg?.host ?: "localhost"
    println("$host @ $timeout ms")
}

Schnelltest

Welchen Wert ergibt user?.email ?: "unknown", wenn user null ist?

Zusammenfassung

Kombinieren Sie Safe Call (?.) und Elvis (?:) für kompakten, null-sicheren Code. Verwenden Sie Elvis mit throw oder return für Guard Clauses, die bei fehlenden Daten frühzeitig abbrechen.

Kostenlos starten

Lerne Kotlin mit einem KI-Tutor — kostenlos

Schreibe und führe echten Code in deinem Browser aus, bekomme sofortige Hilfe von einem 24/7 KI-Tutor und setze dein Lernen im Web oder in der App fort.

Kurse
51
Lektionen
203

Häufig gestellte Fragen

Ist die Lektion „Safe Call ?. und Elvis ?: im praktischen Code“ kostenlos?

Ja — der vollständige Text von „Safe Call ?. und Elvis ?: im praktischen Code“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Kotlin Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Kotlin Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Safe Call ?. und Elvis ?: im praktischen Code“?

Verketten Sie Safe Calls und stellen Sie mit dem Elvis-Operator Ersatzwerte bereit. Du übst Kotlin Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Kotlin Academy zu starten?

Keine Vorkenntnisse erforderlich. Kotlin Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.

Wie lange dauert die Lektion „Safe Call ?. und Elvis ?: im praktischen Code“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Kotlin Academy-Lektion Code schreiben und ausführen?

Ja. Jede Kotlin Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Nullable-Typen und der ?-Modifier
  2. Safe Call ?. und Elvis ?: im praktischen Code
  3. let, also und run mit Nullable-Receivern
  4. !!-Operator: Wann und warum Sie ihn vermeiden sollten
← Zurück zu Kotlin Academy