Usar el object compañero para devolver una instancia de la class en Kotlin

Android Studio 3.0 RC2 Kolin 1.1.51 

Estoy creando una aplicación de Android y quiero devolver la instancia de la class que amplía la aplicación y acceder al equivalente que haría usando una estática en Java.

 class BusbyMoviesMainApplication : Application() { companion object { private val instance: BusbyMoviesMainApplication = BusbyMoviesMainApplication() @JvmStatic fun getBusbyInstance(): BusbyMoviesMainApplication { return instance } } } 

Lo estoy accediendo así. Sin embargo, getCacheDir devuelve null

 BusbyMoviesMainApplication.getBusbyInstance().getCacheDir() 

No puedo ver lo que estoy haciendo mal.

En Java he hecho esto antes, lo que funciona, estoy tratando de hacer lo mismo en Kotlin:

 public class BusbyMoviesApplication extends Application { private static BusbyMoviesApplication mBusbyMoviesApplication; public static BusbyMoviesApplication getInstance() { return mBusbyMoviesApplication; } @Override public void onCreate() { super.onCreate(); mBusbyMoviesApplication = BusbyMoviesApplication.this; } } 

En el código de Kotlin, llama directamente al constructor de la subclass Application lugar de dejar que el marco lo cree por usted. En su lugar, podría hacer lo que hizo en el código de Java e inicializar la propiedad de la instance en el método onCreate la Application (más yo acorté un poco el getter):

 class BusbyMoviesMainApplication : Application() { companion object { private lateinit var instance: BusbyMoviesMainApplication @JvmStatic fun getBusbyInstance() = instance } override fun onCreate() { super.onCreate() instance = this } } 

Basado en la discusión en los comentarios a continuación, esta sería quizás una solución más idiomática para el comprador:

 class BusbyMoviesMainApplication : Application() { companion object { @JvmStatic lateinit var instance: BusbyMoviesMainApplication private set } override fun onCreate() { super.onCreate() instance = this } } 
  • While loop en el lenguaje de progtwigción Kotlin
  • Error de la database de la sala Android: parámetro no utilizado: días en la function @Query
  • ¿Cómo comparar classs e interfaces?
  • En kotlin, ¿cómo hacer que el colocador de properties en el constructor primario sea privado?
  • ¿Cómo declarar variables en Android (Kotlin) usando el estilo del código de Google?
  • Cómo desestructurar objects Kotlin en streams
  • Error al convertir de Java a Kotlin. Error - org.gradle.api.tasks.TaskExecutionException: ejecución fallida para la tarea ': app: compileDebugKotlin'
  • ¿Lista floja en kotlin?
  • Configuración de un proyecto multiplataforma
  • ¿Cómo diseñar para networkingucir las classs networkingundantes en Kotlin?
  • Proyecto Android kotlin construido atascado en la aplicación: tarea kaptDebugKotlin