Jaké objekty jsou v Kotlinu a jak jsou kompilovány?
sobes.tech AI
Odpověď od AI
Objekty v Kotlinu se používají k vytváření singletonů. Jsou deklarovány klíčovým slovem object.
object Singleton {
fun doSomething() {
println("Ahoj ze singletonu!")
}
}
Při kompilaci je Kotlin objekt Singleton převeden na Java třídu Singleton s privátním statickým polem INSTANCE a statickým blokem inicializace.
// Příklad generovaného Java kódu
public final class Singleton {
public static final Singleton INSTANCE; // Statické pole pro jediný výtvor
public final void doSomething() { // Metoda objektu
System.out.println("Ahoj ze singletonu!");
}
private Singleton() { // Soukromý konstruktor, aby nebylo možné vytvořit jiné instance
}
static { // Statický blok inicializace
INSTANCE = new Singleton(); // Vytvoření jediného výtvoru
}
}
Volání metody objektu Singleton.doSomething() v Kotlinu generuje volání statické metody Singleton.INSTANCE.doSomething() v Javě.
Kromě běžných objektů v Kotlinu existují:
-
Třída-komponent (
companion object): Používá se k definování statických členů uvnitř třídy. Přístup je přes název třídy. Každá třída může mít nejvýše jeden třídu-komponent.class MyClass { companion object { const val MY_CONSTANT = "nějaká hodnota" fun create(): MyClass { return MyClass() } } }Překládá se do statických členů třídy v Javě.
-
Výraz objektu (
object expression): Používá se k vytváření anonymních objektů (podobně jako anonymní třídy v Javě).val listener = object : MyInterface { override fun onClick() { println("Kliknuto!") } }Překládá se do anonymní třídy v Javě.