Kotlin中的静态初始化块

问题描述 投票:58回答:2

什么相当于Kotlin的static initialisation block

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

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

java static kotlin initializer
2个回答
101
投票

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

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

1
投票
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
    }
}

可以使用companion关键字标记类中的对象声明。在此下我们可以使用类似java静态方法和variable.LIke classname.methodname或classname.variablename

© www.soinside.com 2019 - 2024. All rights reserved.