Nullable- und Non-Null-Typen
Das ?-Typkennzeichen.
Nullable- und Non-Null-Typen ist eine kostenlose Android Academy-Lektion auf CoddyKit. Dies ist Lektion 1 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 Android Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Android Academy-Kurs umfasst insgesamt 4 Lektionen.
Warum Null-Sicherheit wichtig ist
Viele Abstürze in Android-Apps entstehen durch einen einzigen Fehler: Es wird ein Wert verwendet, der tatsächlich fehlt. In anderen Sprachen führt das zur gefürchteten NullPointerException zur Laufzeit.
Kotlin begegnet diesem Problem bereits zur Compile-Zeit. Das Typsystem verfolgt, welche Werte null sein können und welche niemals null sein können. Diese Lektion stellt die Grundlage dieses Systems vor.
Nicht-Nullable-Typen
Standardmäßig kann ein Kotlin-Typ null nicht enthalten. Ein String verweist immer auf eine tatsächliche Zeichenkette.
Wenn Sie versuchen, ihm null zuzuweisen, wird der Code nicht einmal kompiliert. Das ist die sichere Standardeinstellung.
fun main() {
val name: String = "Ada"
println(name.length)
}Null wird abgelehnt
Sehen Sie sich an, was passiert, wenn Sie versuchen, null in einen Nicht-Nullable-Typ einzufügen.
Der Compiler hält Sie sofort davon ab. Ein versteckter Fehler kann daher nicht erst zur Laufzeit auftreten.
val name: String = null // Compile error:
// Null can not be a value of a non-null type StringNullable-Typen mit ?
Manchmal kann ein Wert tatsächlich fehlen, zum Beispiel der optionale zweite Vorname eines Benutzers. Sie aktivieren dies, indem Sie dem Typ ? hinzufügen.
Ein String? kann eine tatsächliche Zeichenkette oder null enthalten. Das Fragezeichen kennzeichnet den Typ als nullable.
fun main() {
val middleName: String? = null
println(middleName)
}Zwei verschiedene Typen
String und String? sind nicht derselbe Typ. Der zweite ist ein umfassenderer Typ, der den Wert null einschließt.
Diese Unterscheidung ermöglicht es dem Compiler, Sie zu schützen. Er weiß genau, an welchen Stellen null auftreten kann.
val sure: String = "hello"
val maybe: String? = "hello"
// maybe could later be null; sure never canNullable-Werte können nicht direkt verwendet werden
Der Compiler lässt Sie eine Methode nicht auf einem Nullable-Wert aufrufen, ohne dass Sie ihn vorher prüfen.
Da middleName null sein könnte, führt der Aufruf von .length zu einem Kompilierfehler. Sie müssen den Null-Fall behandeln.
val middleName: String? = null
println(middleName.length)
// Error: only safe (?.) or non-null (!!) calls allowedMit if prüfen
Die einfachste Möglichkeit, einen Nullable-Wert zu verwenden, besteht darin, ihn mit einer if-Bedingung zu prüfen.
Innerhalb des Zweigs, in dem Sie nachgewiesen haben, dass der Wert nicht null ist, wandelt Kotlin ihn automatisch per Smart Cast in einen Nicht-Nullable-Typ um, sodass .length funktioniert.
fun main() {
val text: String? = "Kotlin"
if (text != null) {
println(text.length)
}
}Smart Casts
Nach einer erfolgreichen Nullprüfung merkt sich der Compiler für den Rest dieses Blocks, dass der Wert nicht null ist. Das wird als Smart Cast bezeichnet.
Sie haben keine Umwandlung geschrieben. Kotlin verfolgt dies automatisch für Sie.
fun describe(s: String?) {
if (s == null) return
// s is now treated as String here
println("Length is " + s.length)
}Funktionsparameter
Ob ein Parameter nullable ist, gehört zum Vertrag der Funktion. Ein Nicht-Nullable-Parameter verspricht den Aufrufern, dass er niemals null erhält.
Ein Nullable-Parameter signalisiert, dass eine fehlende Eingabe erwartet und behandelt wird.
fun greet(name: String) {
println("Hi, " + name)
}
// greet(null) would not compileRückgabetypen können nullable sein
Eine Funktion kann null zurückgeben, um zu signalisieren, dass nichts gefunden wurde. Kennzeichnen Sie ihren Rückgabetyp mit ?.
Aufrufer wissen dann, dass sie das Ergebnis vor der Verwendung prüfen müssen.
fun firstChar(s: String): Char? {
if (s.isEmpty()) return null
return s[0]
}Standardmäßig Nicht-Nullable verwenden
Eine gute Regel lautet: Bevorzugen Sie Nicht-Nullable-Typen. Fügen Sie ? nur hinzu, wenn ein Wert tatsächlich fehlen kann.
So bleibt Ihr Code eindeutig. Je weniger Nullable-Typen Sie haben, desto weniger Nullprüfungen benötigen Sie später.
// Prefer this:
val score: Int = 0
// Over this, unless null is meaningful:
val maybeScore: Int? = nullSchnelltest
Testen Sie Ihr Verständnis von Nullable- und Nicht-Nullable-Typen.
Zusammenfassung
Kotlin-Typen sind standardmäßig Nicht-Nullable und lehnen null bereits zur Compile-Zeit ab. Fügen Sie ? hinzu, um einen Typ nullable zu machen, wenn ein Wert fehlen kann.
Sie können einen Nullable-Wert nicht direkt verwenden. Eine Nullprüfung führt per Smart Cast zu einem Nicht-Nullable-Typ, sodass Sie ihn sicher verwenden können. Als Nächstes lernen Sie kürzere Möglichkeiten zum Umgang mit Nullable-Werten kennen.
Häufig gestellte Fragen
Ist die Lektion „Nullable- und Non-Null-Typen“ kostenlos?
Ja — der vollständige Text von „Nullable- und Non-Null-Typen“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Android Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Android Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Nullable- und Non-Null-Typen“?
Das ?-Typkennzeichen. Du übst Android 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 Android Academy zu starten?
Keine Vorkenntnisse erforderlich. Android 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 1 von 4.
Wie lange dauert die Lektion „Nullable- und Non-Null-Typen“?
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 Android Academy-Lektion Code schreiben und ausführen?
Ja. Jede Android 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
- Nullable- und Non-Null-Typen
- Sichere Aufrufe und Elvis
- let, also und Scope-Funktionen
- NullPointerExceptions vermeiden