@JvmStatic makes a member of a companion object or object available to Java as a static method. Kotlin normally compiles a companion object as a separate object, so Java may otherwise call the member through Companion or a named companion object. section 4.4.3
Expose a companion member to Java
class Person(val name: String) { companion object { @JvmStatic fun fromJSON(jsonText: String): Person = /* ... */ } } Java can call the annotated member as a static method: Person.fromJSON("..."); Without the annotation, the generated access uses the companion object instead: Person.Companion.fromJSON("..."); section 4.4.3
Use @JvmStatic for Java-facing APIs when Java callers require familiar static syntax. For a static field, use @JvmField on a top-level property or an object property instead. section 4.4.3
