Kotlin中的静态初始化块

时间:2016-05-16 20:11:30

标签: java static kotlin initializer

什么是Kotlin中static initialisation block的等价物?

我知道Kotlin的设计不会产生静电。我正在寻找具有等效语义的东西 - 代码在首次加载类时运行一次。

我的具体用例是我想从Android AppCompat库启用DayNight功能,the instructions说要将一些代码放在Application类的静态初始化块中。

2 个答案:

答案 0 :(得分:95)

从某些角度来看,Kotlin中的companion objects等同于Java类的静态部分。特别是,他们在上课前进行了初始化。第一次使用,这使您可以使用他们的init块作为Java静态初始化器的替代:

class C {
    companion object {
        init {
            //here goes static initializer code
        }
    }
}

答案 1 :(得分:0)

companion object  { 
    // Example for a static variable
    internal var REQUEST_CODE: Int? = 500

    // Example for a static method
    fun callToCheck(value: String): String {
        // your code
    }
}

一个类中的对象声明可以用伴随关键字标记,在此之下我们可以使用像java静态方法和变量这样的方法,比如classname.methodname或classname.variablename