Sobes.tech
Junior — Middle

¿Cómo se transforma en bytecode la estructura del objeto companion durante el proceso de compilación en Kotlin?

sobes.tech AI

Respuesta de la IA

En Kotlin, companion object se compila en una clase estática anidada dentro de la clase externa. Durante la compilación, se crea una clase separada con un nombre, por ejemplo, OuterClass$Companion, que contiene todos los miembros del companion object como métodos y campos estáticos.

Además, en la propia clase externa se crea un campo estático Companion, que hace referencia a la única instancia de esta clase anidada. Esto permite acceder a los miembros del companion object a través de OuterClass.Companion o directamente, si se importa.

De esta manera, companion object implementa el patrón singleton y miembros estáticos, compatibles con JVM, mediante una clase anidada separada y un campo estático de referencia.