Sobes.tech
Junior — Middle

Millist baitkoodi genereeritakse Kotlinis companion object'i deklareerimisel Java projektis?

sobes.tech AI

Vastus AI-lt

Kotlinis, kompileerides JVM baitkoodiks, companion object deklaratsioon muudetakse staatiliseks siseklassiks nimega Companion. See klass sisaldab kõiki companion object liikmeid tavaliste meetodite ja väljadena.

Java koodis pääseb companion object liikmetele ligi, kasutades viidet välise klassi staatilisele väljale Companion.

Näide Kotlinis:

class MyClass {
    companion object {
        fun foo() = "Hello"
    }
}

Kompileeritud baitkood sisaldab klassi MyClass$Companion koos meetodiga foo(), ning MyClass-is on staatiline väli Companion tüüpi MyClass$Companion.

Java-s näeb see välja umbes nii:

MyClass.Companion.foo();

Seega, companion object implementeeritakse kui singleton siseklass, millele pääseb ligi läbi staatilise välja.