Static initialisation block in Kotlin

From some point of view, companion objects 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

Leave a Comment