Kotlin中的静态初始化块

Mar*_*ski 65 java static initializer kotlin

什么是Kotlin 中的静态初始化块

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

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

hot*_*key 103

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

class C {
    companion object {
        init {
            //here goes static initializer code
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

  • @voddan,OP询问在第一次使用现有类之前执行代码.使用`object`声明的解决方案需要一个实际在某处使用它,因为延迟初始化. (3认同)
  • @voddan 您是否愿意解释一下为什么这是一种矫枉过正的做法以及替代方案是什么? (2认同)
  • 对不起,我的错,我误以为你不关心类加载。伴随对象是这里的正确解决方案 (2认同)