如何在kotlin中“静态”访问类的成员?

在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(); 

我们如何在Kotlin中做到这一点? 过去一个多小时,我一直在绕圈子。

提前致谢。

//编辑也许我应该更清楚了。 我的意思是我们怎样才能在Kotlin中写出上面的内容,并在Kotlin中使用它。

在科特林,这被称为“伴侣对象”:

 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 

假设你在android中有一些java代码,你想把它转换成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直接允许你在顶部范围声明单例对象:

val o = object { your attributes and methods here}