Чӣ объектҳо дар Kotlin ҳастанд ва чӣ гуна компил мешаванд?
sobes.tech AI
Ҷавоб аз AI
Объектҳо дар Kotlin барои эҷоди singletonҳо истифода мешаванд. Онҳо бо калиди object эълон карда мешаванд.
object Singleton {
fun doSomething() {
println("Салом аз singleton!")
}
}
Дар вақти компилятсия, объекти Kotlin Singleton ба синфи Java Singleton бо майдони статикӣ INSTANCE ва блоки инициализатсияи статикӣ табдил меёбад.
// Намунаи коди Java, ки тавлид шудааст
public final class Singleton {
public static final Singleton INSTANCE; // Майдони статикӣ барои ягона нусха
public final void doSomething() { // Методи объект
System.out.println("Салом аз singleton!");
}
private Singleton() { // Конструктори хусусӣ
}
static { // Блоку инициализатсияи статикӣ
INSTANCE = new Singleton(); // Эҷоди ягона нусха
}
}
Вақте ки методи объект Singleton.doSomething() дар Kotlin даъват карда мешавад, компилятор даъвати статикӣ Singleton.INSTANCE.doSomething() дар Java мебарорад.
Илова ба объектҳои оддӣ, дар Kotlin мавҷуданд:
-
Объект-компаньон (
companion object): Барои муайян кардани аъзои статикӣ дар дохили синф истифода мешавад. Ба онҳо тавассути номи синф дастрасӣ мешавад. Ҳар як синф метавонад на бештар аз як объект-компаньон дошта бошад.class MyClass { companion object { const val MY_CONSTANT = "қимати баъзе" fun create(): MyClass { return MyClass() } } }Ба аъзои статикӣ дар Java тарҷума мешавад.
-
Ифодаи объект (
object expression): Барои эҷоди объектҳои номаълум (монанд ба синфҳои номаълум дар Java) истифода мешавад.val listener = object : MyInterface { override fun onClick() { println("Клик шуд!") } }Ба синфи номаълум дар Java тарҷума мешавад.