una sirve resueltos que para metodo interfaz interfaces implementacion entre ejercicios diferencia clases clase abstracto abstractas abstracta android kotlin

android - sirve - La propiedad debe ser inicializada o ser abstracta



metodo abstracto java (2)

Debe ser una pregunta estúpida, pero soy muy nuevo en Kotlin y no encontré ninguna solución.

¿Cómo declarar el campo de clase? Como podemos tenerlo en Java:

protected SharedPreferences mSharedPreferences;

Y luego en onCreate() :

mSharedPreferences = PreferenceManager.getDefaultSharedPreferences(this)

Ahora puedo usarlo donde quiera (en subclases de esta actividad base).

Intento hacer lo mismo en Kotlin:

protected var sharedPreferences : SharedPreferences

Y en onCreate() :

sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this)

Pero recibo una advertencia: "La propiedad debe inicializarse o ser abstracta"


Sacando esto de los comentarios de la respuesta de Alexander Udalov para la visibilidad. Para propiedades anulables:

protected var sharedPreferences : SharedPreferences? = null

... y asígnele un valor más tarde.


Si desea inicializar una propiedad fuera del constructor, entonces puede estar buscando propiedades con inicialización tardía . Declare la propiedad con el modificador lateinit , que permitirá omitir el inicializador requerido y hará que el acceso a la propiedad falle con excepción hasta que se le asigne un valor significativo:

protected lateinit var sharedPreferences: SharedPreferences