Sobes.tech
Назад к вопросам
Junior — Middle
73

Какой байткод генерируется для объявления companion object в Kotlin при компиляции в Java-проекте?

Компании, где спрашивали
Магнит Тех

Ответ от нейросети

sobes.tech AI

В Kotlin при компиляции в байткод JVM объявление companion object преобразуется в статический вложенный класс с именем Companion. Этот класс содержит все члены companion object как обычные методы и поля.

В Java-коде для доступа к членам companion object используется ссылка на статическое поле Companion внешнего класса.

Пример Kotlin:

class MyClass {
    companion object {
        fun foo() = "Hello"
    }
}

Скомпилированный байткод будет содержать класс MyClass$Companion с методом foo(), а в MyClass будет статическое поле Companion типа MyClass$Companion.

В Java это выглядит примерно так:

MyClass.Companion.foo();

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