lanzamiento inteligente imposible porque instancia es propiedad mutable

Estoy tratando de hacer un singleton en Kotlin y estoy teniendo problemas porque tengo un smart cast to PresenterManager is impossible because instance is mutable property that could have been changed at this time .

Esto parece una forma bastante estándar de hacer un singleton. ¿Por qué no me deja y cómo puedo solucionarlo?

 PresenterManager { //some code .... companion object { private val PRESENTER_ID = "presenter_id" private var instance: PresenterManager? = null fun getManager(): PresenterManager { if (instance == null) { instance = PresenterManager(10, 30, TimeUnit.SECONDS) } return instance } } } 

Esto parece una forma bastante estándar de hacer un singleton.

Te recomiendo que leas un poco más sobre Kotlin.

 object PresenterManager { init { // init code } fun whatever() {} } 

Lo que escribí arriba es un Singleton en Kotlin. Ahora, para explicar el post que está recibiendo:

Smart Cast para PresenterManager es imposible porque la instancia es una propiedad mutable que podría haberse cambiado en este momento

instance es anulable ( private var instance: PresenterManager? = null ), y la function getManager espera un tipo de devolución no nulo, por lo que una de las muchas forms de resolver esto es hacer que getManager devuelva un tipo anulable ( fun getManager(): PresenterManager? ) O hacer uso de la !! operador en su tipo de devolución.

El punto principal es que realmente no necesita ninguna variable de instance si usa un object lugar de una class para declarar su singleton.

  • Establecer text en EditText Kotlin, Android
  • TableView de Tornadofx usando comboBox y agregando FXEvent en los botones
  • acceso a android.os.storage.StorageVolume
  • ¿Por qué spring-data-elasticsearch no usa el objectmapper desde el context de spring?
  • Kotlin: el comstackdor no deduce el tipo genérico para algunos operadores
  • inyección de guice: diferencia entre getBinding / getExistingBinding / getProvider y getInstance
  • La interoperabilidad Varargs Kotlin Java no funciona correctamente
  • Firebase Realtime Database, ¿cómo saber el estado de "synchronization"?
  • ¿Cómo puedo get el time que lleva una function probar el performance de las funciones en Kotlin?
  • API para desarrolladores de Google Play: valor 400 no válido: compras en aplicaciones
  • El estudio de Android no resuelve las classs escritas en Kotlin (.kt) en el IDE, pero comstack bien