Junior — Middle
Jak je struktura companion object převedena do bytecode během procesu kompilace v Kotlinu?
sobes.tech AI
Odpověď od AI
V Kotlinu je companion object kompilován do statické vnořené třídy uvnitř vnější třídy. Při kompilaci je vytvořena samostatná třída s názvem, například, OuterClass$Companion, která obsahuje všechny členy companion object jako statické metody a pole.
Navíc je ve vnější třídě vytvořeno statické pole Companion, které odkazuje na jediný výtvor této vnořené třídy. To umožňuje přístup ke členům companion object přes OuterClass.Companion nebo přímo, pokud je importováno.
Tímto způsobem companion object implementuje vzor singleton a statické členy, kompatibilní s JVM, prostřednictvím samostatné vnořené třídy a statického pole odkazu.