Назад к вопросам
Junior
112
questionbank

Как в Kotlin создать статическую переменную?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

В Kotlin нет прямого аналога ключевого слова static из Java. Вместо этого используются:

  • companion object: Для создания "статических" членов класса (полей и методов). Они привязаны к классу, а не к конкретному экземпляру.
  • Пакетные функции и свойства: Объявляются на верхнем уровне файла (Top-level declarations) и доступны из любого места без необходимости квалификации именем класса.

Пример с companion object:

class MyClass {
    companion object {
        const val TAG = "MyClass" // Константа времени компиляции (как final static в Java)
        var instanceCount = 0 // Переменная, связанная с классом
    }

    init {
        instanceCount++
    }
}

Пример с пакетными свойствами:

// В файле MyGlobals.kt
const val GLOBAL_CONST = "This is a global constant"
var globalCounter = 0

fun incrementGlobalCounter() {
    globalCounter++
}

Различия и выбор:

  • companion object подходит для членов, логически связанных с классом.
  • Пакетные члены удобны для общих утилит, констант или переменных, не привязанных к конкретному классу.
  • Для констант времени компиляции используйте const val внутри companion object или как пакетную декларацию.