Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Kotlin – lateinit VS ¿Alguna? = Nulo

En Kotlin parece haber dos métodos para declarar una variable dentro de un objeto que puede ser nulo e instanciado después de crear el objeto.

var myObject : Any? = null 

o

 var lateinit myObject : Any 

Estoy confundido acerca de por qué la palabra clave lateinit es necesaria si podemos hacer que var sea nulo y asignarla más tarde. ¿Cuáles son los pros y los contras de cada método y en qué situación se debe utilizar cada uno?

3 Solutions collect form web for “Kotlin – lateinit VS ¿Alguna? = Nulo”

Aquí es cómo veo la diferencia de acuerdo a mi conocimiento actual en Kotlin.

El primero:

 var myObject1 : Any? = null 

Aquí myObject1 es una propiedad que es anulable. Eso significa que puede asignar null a ella.

Segundo:

 lateinit var myObject2 : Any 

Aquí myObject2 es una propiedad no nula. Esto significa que no puede asignar null a ella. Normalmente, si una propiedad no es nula, tiene que inicializarla en la declaración. Pero agregando la palabra clave lateinit permite posponer la inicialización. Si intenta acceder a la propiedad lateinit antes de inicializarla, obtendrá una excepción.

En resumen, la principal diferencia es que myObject1 es un anulable y myObject2 es un no nulo. La palabra clave lateinit proporciona un mecanismo de conveniencia para permitir que una propiedad no nula se inicialice en un momento posterior en lugar de inicializarla en la declaración.

Para más información compruebe esto .

lateinit palabra clave se utiliza en un campo para avoid comprobaciones nulas al referenciar el campo dentro de su objeto. La palabra clave se utiliza principalmente cuando se utiliza la inyección de dependencia para inicializar la variable, o inicializar la variable en el método de configuración de una unidad de prueba

? Se utiliza en un campo cuando el campo se inicializará más adelante en su programa, ya sea por un setter o dentro de un método del objeto, esto es para obligar a comprobar si hay nulo o utilizar seguridad nula ( ?. ) Cuando se hace referencia al campo

Si su propiedad no debe ser null , pero simplemente no se establece después de algún punto en el futuro, es más seguro declararlo con una palabra clave lateinit . Eso garantiza que, si se accede antes de que se establezca, se obtiene una excepción explicando exactamente eso.

La forma tradicional de Java es lanzar una NullPointerException genérica sin explicación sobre ella. Si escribió el código usted mismo, podría tener una pista, pero si alguien captura el error, no quedará claro por qué esa variable en particular es null .

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.