Junior — Middle
¿Qué bytecode se genera para declarar un objeto companion en Kotlin al compilar en un proyecto Java?
sobes.tech AI
Respuesta de la IA
En Kotlin, durante la compilación a bytecode JVM, la declaración companion object se transforma en una clase estática anidada llamada Companion. Esta clase contiene todos los miembros del companion object como métodos y campos normales.
En el código Java, para acceder a los miembros del companion object se usa una referencia al campo estático Companion de la clase externa.
Ejemplo en Kotlin:
class MyClass {
companion object {
fun foo() = "Hello"
}
}
El bytecode compilado contendrá la clase MyClass$Companion con el método foo(), y en MyClass habrá un campo estático Companion de tipo MyClass$Companion.
En Java, esto se ve aproximadamente así:
MyClass.Companion.foo();
De esta forma, el companion object se implementa como un singleton de una clase anidada accesible a través de un campo estático.