Sobes.tech
Junior — Middle

Kako se struktura companion objekta pretvara u bajtkod tokom procesa kompilacije u Kotlinu?

sobes.tech АИ

Одговор од АИ

U Kotlinu, companion object se kompajlira u statički ugnježdeni klasu unutar spoljašnje klase. Tokom kompilacije, kreira se odvojena klasa sa imenom, na primer, OuterClass$Companion, koja sadrži sve članove companion object kao statičke metode i polja.

Pored toga, u samoj spoljašnjoj klasi se kreira statičko polje Companion, koje referiše na jedini primer te ugnježdene klase. Ovo omogućava pristup članovima companion object-a putem OuterClass.Companion ili direktno, ako je uvezeno.

Na ovaj način, companion object implementira singleton obrazac i statičke članove, kompatibilne sa JVM, putem odvojene ugnježdene klase i statičkog polja referenci.