Sobes.tech
Back to questions
Junior — Middle
70

Каким образом преобразуется в байткод структура companion object в процессе компиляции Kotlin?

Companies where asked
Спецвузавтоматика

Answer from AI

sobes.tech AI

В Kotlin companion object компилируется в статический вложенный класс внутри внешнего класса. При компиляции создаётся отдельный класс с именем, например, OuterClass$Companion, который содержит все члены companion object как статические методы и поля.

Кроме того, в самом внешнем классе создаётся статическое поле Companion, которое ссылается на единственный экземпляр этого вложенного класса. Это позволяет обращаться к членам companion object через OuterClass.Companion или напрямую, если импортировать.

Таким образом, companion object реализует паттерн синглтон и статические члены, совместимые с JVM, через отдельный вложенный класс и статическое поле-ссылку.