Ответ
Companion object — это объект, объявленный внутри класса с ключевым словом companion. Он позволяет обращаться к его членам (методам, свойствам) напрямую через имя класса, без создания экземпляра. По сути, это аналог статических членов в Java, но с поддержкой интерфейсов, расширений и других возможностей Kotlin.
Пример:
class MyClass {
companion object {
const val TAG = "MyClass"
fun printTag() = println(TAG)
}
}
// Использование:
MyClass.printTag() // Выведет: MyClass
Особенности:
- Доступен через имя класса (как статический член)
- Может реализовывать интерфейсы
- Поддерживает extension-функции
- Инициализируется при первом обращении (лениво)