Sobes.tech
Middle

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ě.