Назад к вопросам
Middle
114
questionbank
Что такое 'companion object' в Kotlin и в каких случаях его следует использовать?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
companion object в Kotlin — это специальный синглтон-объект, связанный с классом, подобно статическим членам в Java. Имеет доступ к приватным членам класса и может быть вызван напрямую через имя класса без создания экземпляра.
Используется для:
- Фабричных методов: Создание экземпляров класса с более сложной логикой, чем у стандартного конструктора.
class User private constructor(val name: String) { // Приватный конструктор // Фабричный метод companion object { fun create(name: String): User { // Дополнительная логика создания return User("User: $name") } } } - Констант уровня класса: Хранение общих констант, связанных с классом.
class MyClass { companion object { const val DEFAULT_VALUE = 10 } } - Утилитарных функций, привязанных к классу: Функции, которые логически связаны с классом, но не требуют экземпляра.
class StringUtils { companion object { fun isEmptyOrNull(str: String?): Boolean { return str.isNullOrEmpty() } } } - Реализации интерфейсов:
companion objectможет реализовывать интерфейсы, что полезно для предоставления некоторой функциональности без создания экземпляра класса.interface Logger { fun log(message: String) } class DatabaseLogger { companion object : Logger { override fun log(message: String) { println("Database log: $message") } } }