Junior — Middle
Koji se bajtkod generiše za deklaraciju companion objekta u Kotlinu prilikom kompilacije u Java projekat?
sobes.tech АИ
Одговор од АИ
U Kotlin-u, tokom kompilacije u bytecode JVM, deklaracija companion object se pretvara u statičku ugnježdenu klasu pod imenom Companion. Ova klasa sadrži sve članove companion object-a kao obične metode i polja.
U Java kodu, za pristup članovima companion object-a koristi se referenca na statičko polje Companion spoljašnje klase.
Primer u Kotlin-u:
class MyClass {
companion object {
fun foo() = "Hello"
}
}
Kompilovani bajtkod će sadržavati klasu MyClass$Companion sa metodom foo(), a u MyClass će biti statičko polje Companion tipa MyClass$Companion.
U Javi, ovo izgleda otprilike ovako:
MyClass.Companion.foo();
Na ovaj način, companion object se implementira kao singleton ugnježdene klase sa pristupom putem statičkog polja.