Запись на курсы по HTML, CSS, JavaScript, PHP, Python, фреймворкам и CMS,
а также: помощь в поиске работы и заказов, стажировка на реальных проектах→
1285 of 1310 menu
Бесплатный тренинг по PHP: форматирование строк. Начало 25 сентября. Жми для записи!

Аннотация 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)

Смотрите также

  • ключевое слово object,
    которое создает объекты-одиночки
  • ключевое слово companion,
    которое создает компаньон-объекты
  • аннотацию @JvmField,
    которая делает поля доступными как публичные поля в Java
  • ключевое слово static,
    которое создает статические члены класса в Java