Estoy convirtiendo Java a Kotlin con Android Studio. Obtengo doble explosión después de la variable de instancia. ¿Cuál es el doble golpe y, lo que es más importante, dónde está documentado?
mMap!!.addMarker(MarkerOptions().position(london).title("Marker in London"))
kotlin
kotlin-null-safety
mbr_at_ml
fuente
fuente
!!
está al final de una declaración? IJ se convirtió automáticamente a Kotlin lo hizo por míval price = sale.latest!!
sale.latest
puede contenernull
; la asignación tendrá éxito solo sisale.latest
no es nula y de lo contrario arrojará NPE. Esto proporciona seguridad nula paraval price
: su tipo será no nulo. Ver kotlinlang.org/docs/reference/null-safety.html!!
, puede fallar rápidamente y localizar la causa raíz de un NPE. Desearía que Java tuviera una característica similar (es decir, sinif
declaraciones feas y / oassert
iones).Aquí hay un ejemplo para aclarar las cosas. Digamos que tienes esta función
Esto producirá el siguiente error de compilación.
Ahora puede evitar eso agregando un signo de interrogación al
String
tipo para hacerlo anulable.Entonces tenemos
Esto produce un resultado de
null
Ahora, si queremos que la función arroje una excepción cuando el valor del correo electrónico es nulo, podemos agregar dos exclamaciones al final del correo electrónico. Me gusta esto
Esto arrojará un
KotlinNullPointerException
fuente
El operador de doble explosión es una excelente opción para los fanáticos de
NullPointerException
(o NPE para abreviar).Entonces puede escribir
a!!
, y esto devolverá un valor no nulo dea
(unString
aquí, por ejemplo) o arrojará un NPE sia
es nulo.Si desea un NPE, puede tenerlo, pero debe solicitarlo explícitamente. Este operador debe usarse en casos en los que el desarrollador está garantizando: el valor nunca será nulo .
fuente