Sobes.tech
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.