Junior — Middle
Kāds baitkods tiek ģenerēts, deklarējot companion object Kotlin valodā, kompilējot Java projektā?
sobes.tech AI
Atbilde no AI
Kotlinā, kompilējot uz JVM baitkodu, companion object deklarācija tiek pārveidota par statisku iekšējo klasi ar nosaukumu Companion. Šī klase satur visus companion object locekļus kā parastus metodes un laukus.
Java kodā, lai piekļūtu companion object locekļiem, tiek izmantota atsauce uz statisko lauku Companion ārējā klasē.
Piemērs Kotlinā:
class MyClass {
companion object {
fun foo() = "Hello"
}
}
Kompilētais baitkods saturēs klasi MyClass$Companion ar metodi foo(), un MyClass būs statiskais lauks Companion ar tipu MyClass$Companion.
Java izskatās aptuveni šādi:
MyClass.Companion.foo();
Tādējādi, companion object tiek īstenots kā singleton iekšējā klasē ar piekļuvi caur statisko lauku.