Aké objekty sú v Kotlin a ako sa kompilujú?
sobes.tech AI
Odpoveď od AI
Objekty v Kotlin sa používajú na vytváranie singletonov. Sú deklarované kľúčovým slovom object.
object Singleton {
fun doSomething() {
println("Ahoj od singletona!")
}
}
Po kompilácii sa Kotlin objekt Singleton premení na Java triedu Singleton s privátnym statickým poľom INSTANCE a statickým blokom inicializácie.
// Príklad generovaného Java kódu
public final class Singleton {
public static final Singleton INSTANCE; // Statické pole pre jediný výtvor
public final void doSomething() { // Metóda objektu
System.out.println("Ahoj od singletona!");
}
private Singleton() { // Súkromný konštruktor
}
static { // Statický blok inicializácie
INSTANCE = new Singleton(); // Vytvorenie jediného výtvoru
}
}
Volanie metódy objektu Singleton.doSomething() v Kotlin, generuje volanie statickej metódy Singleton.INSTANCE.doSomething() v Jave.
Okrem bežných objektov, v Kotlinu existujú:
-
Objekt-spoločník (
companion object): Používa sa na definovanie statických členov vnútri triedy. Prístup je cez názov triedy. Každá trieda môže mať najviac jeden objekt-spoločník.class MyClass { companion object { const val MY_CONSTANT = "nejaká hodnota" fun create(): MyClass { return MyClass() } } }Kompiluje sa do statických členov triedy v Jave.
-
Výraz objektu (
object expression): Používa sa na vytváranie anonymných objektov (podobne ako anonymné triedy v Jave).val listener = object : MyInterface { override fun onClick() { println("Kliknuté!") } }Kompiluje sa do anonymnej triedy v Jave.