32
Kotlin中的static initialisation block的等效物是什么?Kotlin的静态初始化程序块
据我所知,Kotlin被设计为没有静态的东西。我正在寻找具有同等语义的东西 - 代码在第一次加载时运行一次。
我的具体使用案例是我想从Android AppCompat库启用DayNight功能,并说the instructions将一些代码放在Application
类的静态初始化块中。
Kotlin中的static initialisation block的等效物是什么?Kotlin的静态初始化程序块
据我所知,Kotlin被设计为没有静态的东西。我正在寻找具有同等语义的东西 - 代码在第一次加载时运行一次。
我的具体使用案例是我想从Android AppCompat库启用DayNight功能,并说the instructions将一些代码放在Application
类的静态初始化块中。
从某些角度来看,Kotlin中的companion object
s等价于Java类的静态部分。尤其是,他们班的第一次使用前初始化,这可以让你用自己的init
块为Java静态初始化替代:
class C {
companion object {
init {
//here goes static initializer code
}
}
}
同伴对象是在这里矫枉过正 – voddan
@voddan,OP被问及之前执行代码首先使用现有的类。使用'object'声明的解决方案需要实际使用它,因为延迟初始化。 – hotkey
@voddan你愿意解释为什么这是一个过度杀伤力,有什么替代品? –