从某种角度来看,Kotlin中的伴生对象(companion object
s)等同于Java类的静态部分。特别地,它们在类首次使用之前被初始化,这使您可以使用它们的init
块来替换Java的静态初始化器:
class C {
companion object {
init {
//here goes static initializer code
}
}
}
@voddan,这不是过度设计,实际上这就是Kotlin网站上建议的做法:“当相应的类被加载(解决)时,伴生对象将被初始化,与Java静态初始化器的语义匹配。”对象表达式和声明之间的语义差异
object
声明的解决方案需要实际在某个地方使用它,因为它采用了延迟初始化。 - hotkeycompanion 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 中一样使用静态方法和变量。例如:classname.methodname 或 classname.variablename。