Аннотация JvmStatic
Аннотация @JvmStatic применяется к функциям и свойствам внутри
объектов object и компаньонов companion object для генерации
статических методов в байт-коде JVM. Это позволяет вызывать эти методы
из Java-кода как статические методы класса, а не через экземпляр объекта.
Импорт
kotlinimport kotlin.jvm.JvmStatic
Синтаксис
kotlin@JvmStatic
fun methodName(): ReturnType
kotlin@JvmStatic
val propertyName: Type
Пример
Создадим объект с функцией, помеченной аннотацией @JvmStatic:
kotlinobject StringUtils {
@JvmStatic
fun capitalize(str: String): String {
return str.uppercase()
}
}
В Java такой метод можно вызвать статически:
kotlinString result = StringUtils.capitalize("hello")
Пример
Использование @JvmStatic в компаньон-объекте:
kotlinclass Calculator {
companion object {
@JvmStatic
fun add(a: Int, b: Int): Int {
return a + b
}
}
}
В Java можно вызвать статически:
kotlinint sum = Calculator.add(5, 3)
Пример
Аннотация @JvmStatic для свойства:
kotlinobject Config {
@JvmStatic
val version: String = "1.0.0"
}
В Java можно обратиться к свойству статически:
kotlinString version = Config.getVersion()
Пример
Без аннотации @JvmStatic вызов из Java требует обращения
через экземпляр:
kotlinobject MathOperations {
fun multiply(a: Int, b: Int): Int {
return a * b
}
}
В Java вызов будет через INSTANCE:
kotlinint result = MathOperations.INSTANCE.multiply(4, 5)