Sobes.tech
Middle

Aké objekty sú v Kotlin a ako sa kompilujú?

sobes.tech AI

Odpoveď od AI

Objekty v Kotlin sa používajú na vytváranie singletonov. Sú deklarované kľúčovým slovom object.

object Singleton {
    fun doSomething() {
        println("Ahoj od singletona!")
    }
}

Po kompilácii sa Kotlin objekt Singleton premení na Java triedu Singleton s privátnym statickým poľom INSTANCE a statickým blokom inicializácie.

// Príklad generovaného Java kódu
public final class Singleton {
   public static final Singleton INSTANCE; // Statické pole pre jediný výtvor

   public final void doSomething() { // Metóda objektu
      System.out.println("Ahoj od singletona!");
   }

   private Singleton() { // Súkromný konštruktor
   }

   static { // Statický blok inicializácie
      INSTANCE = new Singleton(); // Vytvorenie jediného výtvoru
   }
}

Volanie metódy objektu Singleton.doSomething() v Kotlin, generuje volanie statickej metódy Singleton.INSTANCE.doSomething() v Jave.

Okrem bežných objektov, v Kotlinu existujú:

  • Objekt-spoločník (companion object): Používa sa na definovanie statických členov vnútri triedy. Prístup je cez názov triedy. Každá trieda môže mať najviac jeden objekt-spoločník.

    class MyClass {
        companion object {
            const val MY_CONSTANT = "nejaká hodnota"
            fun create(): MyClass {
                return MyClass()
            }
        }
    }
    

    Kompiluje sa do statických členov triedy v Jave.

  • Výraz objektu (object expression): Používa sa na vytváranie anonymných objektov (podobne ako anonymné triedy v Jave).

    val listener = object : MyInterface {
        override fun onClick() {
            println("Kliknuté!")
        }
    }
    

    Kompiluje sa do anonymnej triedy v Jave.