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 } } 
  • Referencia de método al organizador de properties
  • cómo vincular y mostrar el estado del progreso usando el data binding en adroid
  • NoSuchMethodError: java.lang.Long.hashCode
  • Error al analizar: org.jetbrains.kotlin.kapt3.diagnostic.KaptError: Error al procesar la anotación
  • error: supertypes de las siguientes classs no se pueden resolver. Por favor, asegúrese de tener las dependencies requeridas en el classpath
  • kodein, inyecta datos a la class simple
  • Corda: Agregar múltiples estados de salida en una sola transacción
  • Accediendo a las vistas de la actividad con Anko
  • Cómo pasar la matriz de cadenas al bash de correo electrónico de Android
  • Kotlin y la nueva ActivityTestRule: la @Rule debe ser pública
  • Resaltado de syntax para los files Kotlin-script en Idea