Sobes.tech
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.