From some point of view, companion object
s in Kotlin are equivalent to static parts of Java classes. Particularly, they are initialized before class’ first usage, and this lets you use their init
blocks as a replacement for Java static initializers:
class C {
companion object {
init {
//here goes static initializer code
}
}
}
@voddan it’s not an overkill, actually this is what suggested on the site of Kotlin: “A companion object is initialized when the corresponding class is loaded (resolved), matching the semantics of a Java static initializer.” Semantic difference between object expressions and declarations