Что такое companion object в Kotlin

«Что такое companion object в Kotlin» — вопрос из категории Kotlin, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

companion object — это объект, объявленный внутри класса, который позволяет обращаться к его членам (методам, свойствам) без создания экземпляра класса, как к статическим в Java.

Особенности:

  • Доступ через имя класса (ClassName.member).
  • Может реализовывать интерфейсы.
  • Может иметь имя (по умолчанию — Companion).

Пример:

class MyClass {
    companion object {
        const val TAG = "MyClass"
        fun create(): MyClass = MyClass()
    }
}

// Использование:
val instance = MyClass.create() // Без создания MyClass
println(MyClass.TAG) // "MyClass"

Отличие от Java static:

  • companion object — это объект (синглтон), поэтому может передаваться как экземпляр (например, в функции, ожидающие интерфейс).