Sobes.tech
Middle

Kokie objektai yra Kotlin ir kaip jie kompiliuojami?

sobes.tech AI

Atsakymas iš AI

Kotlin objektai naudojami singleton'ų kūrimui. Jie deklaruojami naudojant raktinį žodį object.

object Singleton {
    fun doSomething() {
        println("Hello from singleton!")
    }
}

Kotlin objekto Singleton kompiliuojamas į Java klasę Singleton, turinčią privačią statinę lauką INSTANCE ir statinį inicializacijos bloką.

// Pavyzdys sugeneruoto Java kodo
public final class Singleton {
   public static final Singleton INSTANCE; // Statinis laukas vienetiniam egzemplioriui

   public final void doSomething() { // objekto metodas
      System.out.println("Hello from singleton!");
   }

   private Singleton() { // Privatūs konstruktorius, kad negalėtų būti sukurtas kitas egzempliorius
   }

   static { // Statinis inicializacijos blokas
      INSTANCE = new Singleton(); // Vienetinės kopijos sukūrimas
   }
}

Kotlin Singleton.doSomething() metodo iškvietimas Java kalba generuoja Singleton.INSTANCE.doSomething() iškvietimą.

Be įprastų objektų, Kotlin turi:

  • Kompanion objektą (companion object): naudojamas statiniams nariams apibrėžti klasės viduje. Jiems prieinama per klasės pavadinimą. Kiekviena klasė gali turėti ne daugiau kaip vieną companion objektą.

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

    Kompiliuojama į statinius klasės narius Java kalboje.

  • Objekto išraiškos (object expression): naudojamos kuriant anoniminius objektus (kaip anoniminiai klasės Java kalboje).

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

    Kompiliuojama į anoniminius klases Java kalboje.