Was passiert, wenn man auf ein nullable-Feld eines Objekts in Kotlin zugreift?
sobes.tech KI
Antwort von AI
Wenn auf ein nullable-Feld eines Objekts zugegriffen wird, ohne auf null zu prüfen, tritt eine NullPointerException (NPE) auf.
Um sicheren Zugriff zu gewährleisten, können die folgenden Ansätze verwendet werden:
-
Sicherer Aufruf-Operator (
?.): Gibtnullzurück, wenn das Objektnullist, sonst führt es den Aufruf aus.// Angenommen, user? ist ein User? val userName: String? = user?.name -
Nicht-Null-Assertion-Operator (
!!): Bestätigt explizit, dass das Objekt nichtnullist. Wenn doch, wird eineNullPointerExceptionausgelöst.// Bewusst verwenden, kann zu NPE führen val userName: String = user!!.name -
Elvis-Operator (
?:): Bietet einen Standardwert, wenn das Objekt links vom Operator?:nullist.val userName: String = user?.name ?: "Unbekannter Benutzer" -
if- oderwhen-Blöcke: Explizitenull-Prüfung.if (user != null) { val userName = user.name } else { // Behandlung des Falls, dass user `null` ist } -
Funktionen
let,run,apply,withmit sicherem Aufruf:user?.let { // `it` innerhalb dieses Blocks ist ein nicht-nullbarer `User` val userName = it.name }
Die Wahl hängt von der Programmlogik und dem gewünschten Verhalten im Fall eines null-Objekts ab. Es wird empfohlen, den sicheren Aufruf-Operator (?.) oder den Elvis-Operator (?:) zu verwenden, um NPE zu vermeiden. Der !!-Operator sollte mit Vorsicht eingesetzt werden.