Sobes.tech
Middle

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.