Sobes.tech
Junior — Middle

Kaip kompiliacijos metu Kotlin'e struktūra companion object paverčiama į baitkodą?

sobes.tech AI

Atsakymas iš AI

Kotlin'e companion object kompiliuojamas į statinį vidinį klasę, esančią išorinėje klasėje. Kompiliacijos metu sukurta atskira klasė, pavyzdžiui, OuterClass$Companion, kuri apima visus companion object narius kaip statinius metodus ir laukus.

Be to, pačioje išorinėje klasėje sukuriamas statinis laukas Companion, kuris nurodo į vienintelį šios vidinės klasės egzempliorių. Tai leidžia pasiekti companion object narius per OuterClass.Companion arba tiesiogiai, jei importuota.

Taip companion object įgyvendina singleton modelį ir statinius narius, suderinamus su JVM, per atskirą vidinę klasę ir statinį nuorodų lauką.