Was ist in Kotlin der idiomatische Weg, um Nullable-Werte zu behandeln, sie zu referenzieren oder zu konvertieren?

Wenn ich eine nullable-Typ Xyz? möchte ich verweisen, oder wandeln Sie es in ein nicht-nullable-Typ Xyz. Was ist die idiomatische Weise, dies zu tun in Kotlin?

Zum Beispiel, dieser code ist in Fehler:

val something: Xyz? = createPossiblyNullXyz()
something.foo() //Error: "Only safe (?.) or non-null asserted (!!.) calls are allowed on a nullable receiver of type Xyz?"

Aber wenn ich check null-zuerst ist es erlaubt, warum?

val something: Xyz? = createPossiblyNullXyz()
if (something != null) {
    something.foo() 
}

Wie kann ich die ändern oder zu behandeln, einen Wert als nicht null ohne dass die if überprüfen, vorausgesetzt, ich weiß, für sicher, es ist wirklich nie null? Zum Beispiel, hier bin ich abrufen eines Wertes aus einer Karte, die ich kann-Garantie vorhanden ist und das Ergebnis get() ist nicht null. Aber ich habe einen Fehler:

val map = mapOf("a" to 65,"b" to 66,"c" to 67)
val something = map.get("a")
something.toLong() //Error: "Only safe (?.) or non-null asserted (!!.) calls are allowed on a nullable receiver of type Int?"

Die Methode get() hält es für möglich, dass das Element fehlt, und zurück geben Int?. Also, was ist der beste Weg, um zu erzwingen, die den Typ des Wertes keine null-Werte?

Hinweis: diese Frage ist absichtlich geschrieben und beantwortet der Autor (Selbst Beantwortete Fragen), so dass die idiomatischen Antworten auf Häufig gestellte Kotlin Themen vorhanden sind, SO. Auch zu klären, einige wirklich alte Antworten geschrieben alphas Kotlin, die nicht korrekt für den aktuellen Tag Kotlin.

InformationsquelleAutor der Frage Jayson Minard | 2015-12-28

Schreibe einen Kommentar