Sobes.tech
Middle

Kotlin'de hangi nesneler var ve nasıl derlenirler?

sobes.tech yapay zeka

AI'dan gelen yanıt

Kotlin'de nesneler, singletonlar oluşturmak için kullanılır. object anahtar kelimesiyle tanımlanırlar.

object Singleton {
    fun doSomething() {
        println("Singleton'dan Merhaba!")
    }
}

Derleme sırasında, Kotlin Singleton nesnesi, Java'da özel statik alan INSTANCE ve statik başlatma bloğu olan bir Java sınıfına dönüştürülür.

// Oluşan Java kodu örneği
public final class Singleton {
   public static final Singleton INSTANCE; // Tek örnek için statik alan

   public final void doSomething() { // Nesne metodu
      System.out.println("Singleton'dan Merhaba!");
   }

   private Singleton() { // Dışarıdan yeni örnek oluşturulmasını engelleyen özel yapıcı
   }

   static { // Statik başlatma bloğu
      INSTANCE = new Singleton(); // Tek örneğin oluşturulması
   }
}

Kotlin'de Singleton.doSomething() nesne metodunu çağırmak, Java'da Singleton.INSTANCE.doSomething() statik metod çağrısıyla derlenir.

Normal nesnelerin yanı sıra, Kotlin'de şunlar da vardır:

  • Sınıf içi nesne (companion object): Bir sınıf içinde statik üyeler tanımlamak için kullanılır. Sınıf adıyla erişilir. Her sınıfın en fazla bir tane sınıf içi nesnesi olabilir.

    class MyClass {
        companion object {
            const val MY_CONSTANT = "some value"
            fun create(): MyClass {
                return MyClass()
            }
        }
    }
    

    Java'da statik sınıf üyeleri olarak derlenir.

  • Nesne ifadesi (object expression): Java'daki anonim sınıflara benzer şekilde, anonim nesneler oluşturmak için kullanılır.

    val listener = object : MyInterface {
        override fun onClick() {
            println("Tıklandı!")
        }
    }
    

    Java'da anonim sınıfa derlenir.