Kotlin 中的静态初始化块

Static initialisation block in Kotlin

Kotlin 中的 static initialisation block 等价于什么?

我知道 Kotlin 被设计成没有静态的东西。我正在寻找具有等效语义的东西 - 当 class 首次加载时,代码是 运行 一次。

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

从某种角度来看,Kotlin 中的 companion objects 相当于 Java classes 的静态部分。特别是,它们在 class 首次使用之前被初始化,这让您可以使用它们的 init 块来替代 Java 静态初始化器:

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

@voddan 这不是矫枉过正,实际上这就是 Kotlin 网站上的建议:“当相应的 class 被加载(解析)时,伴随对象被初始化,匹配 Java 静态初始值设定项。” Semantic difference between object expressions and declarations

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
    }
}

class 中的对象声明可以用伴随 keyword.And 标记,在此我们可以使用像 java 静态方法和 variable.LIke classname.methodname或 classname.variablename