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.