Junior — Middle
Ce bytecode este generat pentru declararea unui obiect companion în Kotlin la compilarea într-un proiect Java?
sobes.tech AI
Răspuns de la AI
În Kotlin, în timpul compilării în bytecode JVM, declarația companion object este transformată într-o clasă statică imbricată numită Companion. Această clasă conține toți membrii companion object ca metode și câmpuri obișnuite.
În codul Java, pentru a accesa membrii companion object, se folosește o referință la câmpul static Companion al clasei externe.
Exemplu în Kotlin:
class MyClass {
companion object {
fun foo() = "Hello"
}
}
Bytecode-ul compilat va conține clasa MyClass$Companion cu metoda foo(), iar în MyClass va exista un câmp static Companion de tip MyClass$Companion.
În Java, acest lucru arată aproximativ așa:
MyClass.Companion.foo();
Astfel, companion object este implementat ca un singleton al unei clase imbricate, accesibil printr-un câmp static.