Wenn ich eine Nullable habe Boolean b
, kann ich den folgenden Vergleich in Java durchführen:
Boolean b = ...;
if (b != null && b) {
/* Do something */
} else {
/* Do something else */
}
In Kotlin kann ich dasselbe erreichen, indem ich den !!
Operator verwende:
val b: Boolean? = ...
if (b != null && b!!) {
/* Do something */
} else {
/* Do something else */
}
Die Verwendung von !!
fühlt sich für mich jedoch etwas skizzenhaft an und umgeht das Null-Sicherheitssystem.
Gibt es dafür einen eleganteren Ansatz?
Bearbeiten Es scheint, ich habe ein bisschen zu stark vereinfacht. Für lokale Variablen funktioniert es , wie Banthar zeigt. Mein Boolescher Wert b
ist jedoch tatsächlich eine "Eigenschaft mit einem Hintergrundfeld" (ich bin noch nicht wirklich auf dem neuesten Stand, was dies bedeutet). Das ist das Ergebnis:
b
möglicherweise null
und eine der Funktionen von Kotlin ist Null Safety , die Kompilierungsfehler beim Versuch, nullfähige Referenzen auszuwerten, verursacht. Daher führt die Verwendung von plain zu b
einem Kompilierungsfehler :)
b != nil
, bevor die rechte Seite überprüft wird?
val r = b?doSomething() ?: doSomethingElse()
sollte funktionieren.
!!b
und nicht einfachb
? (Ich bin nicht so vertraut mit Kotlin, nur Kuriositäten)