Konwertuję Javę na Kotlin za pomocą Android Studio. Po zmiennej instancji pojawia się podwójny huk. Co to jest podwójny wybuch i co ważniejsze, gdzie jest to udokumentowane?
mMap!!.addMarker(MarkerOptions().position(london).title("Marker in London"))
kotlin
kotlin-null-safety
mbr_at_ml
źródło
źródło
!!
znajduje się na końcu oświadczenia? IJ auto-convert to Kotlin zrobił to za mnieval price = sale.latest!!
sale.latest
może zawieraćnull
; przypisanie powiedzie się tylko wtedy, gdysale.latest
nie jest zerowe, aw przeciwnym razie spowoduje zgłoszenie NPE. Daje to bezpieczeństwo null dlaval price
: jego typ będzie różny od null. Zobacz kotlinlang.org/docs/reference/null-safety.html!!
możesz szybko zawieść i zlokalizować główną przyczynę NPE. Chciałbym, żeby Java miała podobną funkcję (to znaczy bez brzydkichif
instrukcji i / lubassert
jonów).Oto przykład, aby wszystko było jaśniejsze. Powiedz, że masz tę funkcję
Spowoduje to następujący błąd kompilacji.
Teraz możesz temu zapobiec, dodając znak zapytania do
String
typu, aby nadać mu wartość null.Więc mamy
Daje to wynik
null
Teraz, jeśli chcemy, aby funkcja rzucała wyjątek, gdy wartość wiadomości e-mail jest zerowa, możemy dodać dwa wykrzykniki na końcu wiadomości. Lubię to
Spowoduje to rzucenie
KotlinNullPointerException
źródło
Operator podwójnego huku to doskonała opcja dla fanów
NullPointerException
(w skrócie NPE).Możesz więc pisać
a!!
, a to zwróci niezerową wartośća
(String
na przykład a tutaj) lub wyrzuci NPE, jeślia
jest null.Jeśli chcesz NPE, możesz go mieć, ale musisz o to wyraźnie poprosić. Ten operator powinien być używany w przypadkach, gdy programista gwarantuje - wartość nigdy nie będzie zerowa .
źródło