companion object — это специальный объект, связанный с классом, но не являющийся его экземпляром. Он действует как статические члены в Java.
Ключевые моменты:
companion object.Companion).companion object можно обращаться напрямую через имя класса, без создания экземпляра.Примеры использования:
Фабричные методы: Для создания экземпляров класса с более сложной логикой инициализации, чем обычные конструкторы.
kotlin
Константы уровня класса: Для определения значений, которые должны быть доступны без создания экземпляра.
kotlin
Реализация интерфейсов: companion object может реализовывать интерфейсы, что полезно для имитации статических фабрик с общей функциональностью.
kotlin
Расширения: companion object можно расширять, что позволяет добавлять "статические" методы к классу извне.
kotlin
В целом, companion object следует использовать, когда требуется функциональность, логически связанная с классом, но не требующая экземпляра этого класса. Это более идиоматичный Kotlin-способ достижения того, что в Java достигается с помощью статических членов, предлагая при этом большую гибкость (например, в плане реализации интерфейсов и расширений). Не следует злоупотреблять им для хранения состояния, которое должно быть уникальным для каждого экземпляра.