Sobes.tech
Junior — Middle

Код баиткоди ки барои эълон кардани object companion дар Kotlin ҳангоми компиликунон дар лоиҳаи Java истеҳсол мешавад?

sobes.tech AI

Ҷавоб аз AI

Дар Kotlin, ҳангоми таҳрири коди байт барои JVM, эълони companion object ба класи статикӣ дарунсохт бо номи Companion табдил меёбад. Ин класс ҳамаи аъзои companion object-ро ҳамчун методҳо ва майдонҳои оддӣ дорад.

Дар коди Java, барои дастрасӣ ба аъзои companion object, ба сілтӣ ба майдони статикии Companion дар класи беруна истифода мешавад.

Масалан дар Kotlin:

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

Кодекси байтшудаи таҳияшуда класи MyClass$Companion бо методи foo()-ро дар бар мегирад, ва дар MyClass майдони статикӣ Companion аз навъи MyClass$Companion хоҳад буд.

Дар Java, ин тақрибан чунин менамояд:

MyClass.Companion.foo();

Бинобар ин, companion object ҳамчун singleton-и класи дохилӣ бо дастрасӣ тавассути майдони статикӣ амалӣ мешавад.