Koji objekti postoje u Kotlinu i kako se kompajliraju?
sobes.tech АИ
Одговор од АИ
Objekti u Kotlinu se koriste za kreiranje singleton objekata. Deklarišu se ključnom reči object.
object Singleton {
fun doSomething() {
println("Zdravo od singletona!")
}
}
Prilikom kompilacije, Kotlin objekat Singleton se pretvara u Java klasu Singleton sa privatnim statičkim poljem INSTANCE i statičkim blokom inicijalizacije.
// Primer generisanog Java koda
public final class Singleton {
public static final Singleton INSTANCE; // Statičko polje za jedini primerak
public final void doSomething() { // Metod objekta
System.out.println("Zdravo od singletona!");
}
private Singleton() { // Privatni konstruktor
}
static { // Statički blok inicijalizacije
INSTANCE = new Singleton(); // Kreiranje jedinstvenog primera
}
}
Kada se pozove metoda objekta Singleton.doSomething() u Kotlinu, kompajler generiše poziv statičke metode Singleton.INSTANCE.doSomething() u Javi.
Pored običnih objekata, u Kotlinu postoje:
-
Objekat-kompanjon (
companion object): Koristi se za definisanje statičkih članova unutar klase. Do njih se pristupa putem imena klase. Svaka klasa može imati najviše jedan objekat-kompanjon.class MyClass { companion object { const val MY_CONSTANT = "neka vrednost" fun create(): MyClass { return MyClass() } } }Kompajlira se u statičke članove klase u Javi.
-
Izraz objekta (
object expression): Koristi se za kreiranje anonimnih objekata (slično anonimnim klasama u Javi).val listener = object : MyInterface { override fun onClick() { println("Kliknuto!") } }Kompajlira se u anonimnu klasu u Javi.