Junior — Middle
Ako sa počas kompilácie v Kotlin-e premení štruktúra companion object na bajtkód?
sobes.tech AI
Odpoveď od AI
V Kotlinu sa companion object kompiluje do statickej vnorenéj triedy vnútri vonkajšej triedy. Po kompilácii sa vytvorí samostatná trieda s názvom, napríklad, OuterClass$Companion, ktorá obsahuje všetky členy companion object ako statické metódy a polia.
Okrem toho sa v samotnej vonkajšej triede vytvorí statické pole Companion, ktoré odkazuje na jediný výtvor tejto vnorenéj triedy. To umožňuje prístup k členom companion object cez OuterClass.Companion alebo priamo, ak je importované.
Týmto spôsobom companion object implementuje vzor singleton a statické členy, kompatibilné s JVM, prostredníctvom samostatnej vnorenéj triedy a statického poľa odkazov.