Как определить класс приложения и переменную Static в kotlin - PullRequest
0 голосов
/ 18 декабря 2018

Как написать Эквивалентный код в kotlin, мне нужно использовать статическую переменную, определенную

public class ThisForThatApplication extends Application {

    static ThisForThatApplication appInstance;

    public static ThisForThatApplication getAppInstance() {
        if (appInstance == null) {
            appInstance = new ThisForThatApplication();
        }
        return appInstance;
    }
}

Ответы [ 3 ]

0 голосов
/ 18 декабря 2018

В Котлине нет понятия static.Однако вы можете добиться того же, используя сопутствующие объекты .Проверьте Kotlin выражение объекта и объявление для получения более подробного объяснения.

Поскольку в вашем примере вы просто хотите создать Singleton, вы можете сделать:

class ThisForThatApplication: Application() {
    companion object {
        val instance = ThisForThatApplication()
    }
}

Однако каквы создаете класс Android Application , с точки зрения Android было бы лучше инициализировать экземпляр в методе onCreate () :

class ThisForThatApplication : Application() {

    companion object {
        lateinit var instance: ThisForThatApplication
            private set
    }

    override fun onCreate() {
        super.onCreate()
        ThisForThatApplication.instance = this
    }
}

private set внижняя часть объекта-компаньона позволяет только классу ThisForThatApplication устанавливать значение.

0 голосов
/ 18 декабря 2018

Класс приложения и статическая переменная в Kotlin

class App : Application() {

init {
    instance = this
}

companion object {
    private var instance: App? = null

    fun applicationContext(): Context {
        return instance!!.applicationContext
    }
}

override fun onCreate() {
    super.onCreate()
}
}
0 голосов
/ 18 декабря 2018

Попробуйте следующим образом

class ThisForThatApplication : Application() {

    companion object {

        @JvmField
        var appInstance: ThisForThatApplication? = null



        @JvmStatic fun getAppInstance(): ThisForThatApplication {
            return appInstance as ThisForThatApplication
        }
    }

    override fun onCreate() {
        super.onCreate()
        appInstance=this;
    }

}

Для получения дополнительной информации, пожалуйста, прочитайте Static Fields & Static Methods

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...