Erklären Sie, was Null-Sicherheit in der Kotlin-Sprache ist.
sobes.tech KI
Antwort von AI
Null Safety — ist eine Funktion der Programmiersprache Kotlin, die Fehler im Zusammenhang mit null-Referenzen verhindert. Sie wird erreicht, indem zwei Referenztypen erstellt werden: nullable (erlaubt null) und non-nullable (erlaubt kein null).
Nicht-nullbare Typen werden wie üblich deklariert:
var nonNullableString: String = "Hello" // Kann nicht null sein
Nullable Typen werden mit dem Symbol ? nach dem Typnamen deklariert:
var nullableString: String? = "Hello" // Kann null sein
nullableString = null
Kotlin erfordert eine explizite Behandlung von nullable Typen, um direkten Zugriff auf deren Mitglieder ohne vorherige null-Prüfung zu vermeiden. Dafür stehen folgende Mechanismen zur Verfügung:
-
Sicherer Aufruf-Operator (
?.): Ruft eine Methode oder Property nur auf, wenn das Objekt nichtnullist. Andernfalls gibt esnullzurück.val length = nullableString?.length // length ist Int? oder null -
Elvis-Operator (
?:): Gibt einen Standardwert zurück, wenn der Ausdruck links vom Operatornullist.val nonNullLength = nullableString?.length ?: 0 // nonNullLength ist Int, 0 wenn nullableString null -
Nicht-Null-Assertion-Operator (
!!): Wandelt einen nullable Typ in einen non-nullable Typ um. Wenn der Wertnullist, wird eineNullPointerExceptionausgelöst. Wird verwendet, wenn der Entwickler sicher ist, dass der Wert nichtnullist.val sureLength = nullableString!!.length // Löst NullPointerException aus, wenn nullableString null ist -
if-Prüfungen: Traditionellenull-Prüfung mitif. Der Compiler führt innerhalb desif-Blocks eine sogenannte Smart Cast durch, sodass der nullable Typ als non-nullable behandelt wird, wenn die Prüfung bestanden wurde.if (nullableString != null) { val length = nullableString.length // Hier wird nullableString als String behandelt }
Diese Mechanismen ermöglichen eine explizite Steuerung der Situationen, in denen eine Variable null sein kann, was die Wahrscheinlichkeit von NullPointerException-Fehlern zur Laufzeit deutlich reduziert.