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