如何访问班级成员"静态"在kotlin?

时间:2017-08-31 18:53:35

标签: android 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中使用它。

5 个答案:

答案 0 :(得分:5)

在Kotlin中,这被称为“伴侣对象”:

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

答案 1 :(得分:2)

我缺少的关键元素是使用init块来设置伴随对象内的appContext(我已经尝试了伴随对象路径,但实际上已经设置了appContext)。

见下面的代码:

class MyApplication : Application() {

    init {
        appContext = this
    }

    companion object {
        lateinit var appContext: Context
            private set
    }
}

然后可以通过以下方式调用:

val testContext = MyApplication.appContext

答案 2 :(得分:1)

假设您在Android中有一些java代码,并且您想将其转换为kotlin代码:

  1. Visit Link
  2. 找到Convert from java
  3. 帮助我转换我在互联网上找到的java代码并将其转换为kotlin代码,

      

    这可能answer对您的问题没有帮助,但它可以帮助您将java中您不知道该怎么做的内容转换为kotlin

答案 3 :(得分:0)

你可以这样使用

companion object{  
 //your static fields 
}

从kotlin ==>调用它ClassName.FieldName

从java ==>中调用它ClassName.Companion.getFieldName()

答案 4 :(得分:0)

在运行时,您似乎只想要此类的一个对象。这称为单身。有建议在Java中正确实现。幸运的是,Kotlin直接允许您在顶部范围内声明单例对象:

val o = object { your attributes and methods here}