Junior — Middle
Quale bytecode viene generato per dichiarare un oggetto companion in Kotlin durante la compilazione in un progetto Java?
sobes.tech AI
Risposta dell'AI
In Kotlin, durante la compilazione in bytecode JVM, la dichiarazione companion object viene trasformata in una classe statica annidata chiamata Companion. Questa classe contiene tutti i membri del companion object come metodi e campi normali.
Nel codice Java, per accedere ai membri del companion object si utilizza un riferimento al campo statico Companion della classe esterna.
Esempio in Kotlin:
class MyClass {
companion object {
fun foo() = "Hello"
}
}
Il bytecode compilato conterrà la classe MyClass$Companion con il metodo foo(), e in MyClass ci sarà un campo statico Companion di tipo MyClass$Companion.
In Java, questo appare circa così:
MyClass.Companion.foo();
In questo modo, l'oggetto companion viene implementato come un singleton di una classe annidata accessibile tramite un campo statico.