Kotlin中的静态初始化块等效于什么?
我了解Kotlin的设计宗旨是不带静电。我正在寻找具有相同语义的东西-首次加载该类时,代码将运行一次。
我的特定用例是,我想从Android AppCompat库启用DayNight功能,并且说明要求将一些代码放入Application
类的静态初始化块中。
Answers:
从某种角度看,Kotlin中的companion object
s等同于Java类的静态部分。特别是,它们是在首次使用类之前初始化的,这使您可以使用它们的init
块来代替Java静态初始化器:
class C {
companion object {
init {
//here goes static initializer code
}
}
}
object
声明的解决方案由于延迟初始化,因此需要在某个地方实际使用它。
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静态方法和变量这样的方法,比如classname.methodname或classname.variablename