Назад к вопросам
Middle
69
questionbank

Как в Kotlin создать статическое поле, метод или класс?

Sobes Copilot

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

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

sobes.tech AI

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

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

Примеры:

Companion object:

class MyClass {
    companion object {
        const val MY_CONSTANT = "Hello" // Статическое поле (константа времени компиляции)
        var myVariable = 0 // Статическое поле

        fun myStaticMethod() { // Статический метод
            println("This is a static method.")
        }
    }
}

Доступ: MyClass.MY_CONSTANT, MyClass.myVariable, MyClass.myStaticMethod().

Top-level declarations:

// MyFile.kt
const val TOP_LEVEL_CONSTANT = "World" // Статическое поле (константа)
var topLevelVariable = 1 // Статическое поле

fun topLevelMethod() { // Статический метод
    println("This is a top-level method.")
}

Доступ: TOP_LEVEL_CONSTANT, topLevelVariable, topLevelMethod() (импортируются из файла).

Object (Singleton):

object MySingleton {
    const val SINGLETON_CONSTANT = "Singleton" // Статическое поле (константа)
    var singletonVariable = 2 // Статическое поле

    fun singletonMethod() { // Статический метод
        println("This is a singleton method.")
    }
}

Доступ: MySingleton.SINGLETON_CONSTANT, MySingleton.singletonVariable, MySingleton.singletonMethod(). MySingleton сам по себе ведет себя как статический класс.