Milyen objektumok vannak Kotlinben és hogyan fordítódnak?
sobes.tech MI
Válasz az MI-től
A Kotlinban az objektumokat singletonok létrehozására használják. Azokat a object kulcsszóval lehet deklarálni.
object Singleton {
fun doSomething() {
println("Helló a singletonból!")
}
}
Fordításkor a Kotlin Singleton objektumát egy Java Singleton osztállyá alakítja, amelynek privát statikus INSTANCE mezője és statikus inicializációs blokkja van.
// Generált Java kód példája
public final class Singleton {
public static final Singleton INSTANCE; // Statikus mező az egyetlen példányhoz
public final void doSomething() { // Objektum metódus
System.out.println("Helló a singletonból!");
}
private Singleton() { // Privát konstruktor, hogy ne lehessen más példányokat létrehozni
}
static { // Statikus inicializációs blokk
INSTANCE = new Singleton(); // Az egyetlen példány létrehozása
}
}
A Kotlin Singleton.doSomething() metódus hívásakor a fordító generál egy statikus hívást Singleton.INSTANCE.doSomething() Java-ban.
A szokásos objektumokon kívül, a Kotlinban léteznek:
-
Tárgy-objektum (
companion object): Statikus tagokat definiál egy osztályon belül. Azokat az osztály neve alapján lehet elérni. Minden osztálynak legfeljebb egy tárgy-objektuma lehet.class MyClass { companion object { const val MY_CONSTANT = "valami érték" fun create(): MyClass { return MyClass() } } }Java-ban statikus tagokká fordul.
-
Objektum kifejezés (
object expression): Anonim objektumokat hoz létre, hasonlóan az anonim osztályokhoz Java-ban.val listener = object : MyInterface { override fun onClick() { println("Kattintott!") } }Java-ban anonim osztállyá fordul.