Как получить доступ к члену класса «статически» в котлин?

В Java и Android мы можем сделать это:

public static MyApplication extends Application { private static Context appContext; public void onCreate() { appContext = this; } public static Context getAppContext() { return appContext; } } 

так что в другом месте мы можем это сделать:

 appContext = MyApplication.getAppContext(); 

Как мы это делаем в Котлине? Я крутился кругами в течение последнего часа или около того.

Заранее спасибо.

// Edit Возможно, я должен был быть более ясным. Я имел в виду, как мы можем написать выше в Котлин и использовать его в Котлине.

В Котлине это называется «компаньонным объектом»:

 class MyApplication: Application { companion object { var appContext: Context? = null private set } } 

Ключевым элементом, который я отсутствовал, было использование блока init для установки appContext, который находится внутри объекта-компаньона (я уже пробовал путь к сопутствующему объекту, но изо всех сил пытался получить набор appContext).

См. Следующий код:

 class MyApplication : Application() { init { appContext = this } companion object { lateinit var appContext: Context private set } } 

Затем это можно вызвать, как обычно:

 val testContext = MyApplication.appContext 

Предположим, что у вас есть java код в android, и вы хотите преобразовать его в код kotlin :

  1. Посетить ссылку
  2. найти Convert from java

это поможет мне преобразовать код java который я нашел в Интернете, и преобразовать его в код kotlin ,

может этот answer не поможет вам в вопросе вашего вопроса, но это поможет вам преобразовать то, что вы знаете в java что вы не знаете, как это сделать в kotlin

вы можете использовать его таким образом

 companion object{ //your static fields } 

вызвать его из kotlin ==> ClassName.FieldName

для вызова его из java ==> ClassName.Companion.getFieldName ()

Похоже, вы хотите, чтобы во время выполнения выполнялся только один объект этого класса. Это называется одноэлементным . Есть рекомендации по правильному внедрению в Java. К счастью, Kotlin позволяет вам объявлять объекты singleton в верхней области:

val o = object { your attributes and methods here}