Kotlin 中的静态初始化块

2022-08-31 11:08:46

Kotlin 中的静态初始化块等效项是什么?

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

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


答案 1

从某种角度来看,Kotlin 中的伴随对象s 等效于 Java 类的静态部分。特别是,它们在类首次使用之前初始化,这允许您使用它们的块作为Java静态初始值设定项的替代品:init

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

@voddan这并不是一个过分的,实际上这是Kotlin网站上的建议:“当相应的类被加载(解析)时,伴随对象被初始化,与Java静态初始值设定项的语义相匹配。对象表达式和声明之间的语义差异


答案 2
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这样的静态方法和变量。LIke classname.methodname or classname.variablename


推荐