Junior — Middle
Kokį baitkodo generuoja Kotlin kompiliuojant companion object Java projekte?
sobes.tech AI
Atsakymas iš AI
Kotlin'e, kompiliuojant į JVM baitkodą, companion object deklaracija paverčiama į statinį vidinį klasę, vadinamą Companion. Ši klasė apima visus companion object narius kaip įprastus metodus ir laukus.
Java kode, norint pasiekti companion object narius, naudojamas nuoroda į statinį lauką Companion iš išorinės klasės.
Pavyzdys Kotlin'e:
class MyClass {
companion object {
fun foo() = "Hello"
}
}
Kompiliuotas baitkodas turės klasę MyClass$Companion su metodu foo(), o MyClass turės statinį lauką Companion tipo MyClass$Companion.
Java'e tai atrodo maždaug taip:
MyClass.Companion.foo();
Taip, companion object yra įgyvendinamas kaip singleton vidinis klasės, prieinamą per statinį lauką.