Назад к вопросам
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 реализуется как синглтон вложенного класса с доступом через статическое поле.