Sobes.tech
Middle

Millised objektid on Kotlinis ja kuidas neid kompileeritakse?

sobes.tech AI

Vastus AI-lt

Kotlin objektid kasutatakse singlontide loomiseks. Nad deklareeritakse võtmesõnaga object.

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

Kotlin objekti Singleton teisendatakse Java klassiks Singleton, millel on privaatne staatiline väli INSTANCE ja staatiline initsialiseerimisblokk.

// Näide genereeritud Java-koodist
public final class Singleton {
   public static final Singleton INSTANCE; // Staatiline väli ühe eksemplari jaoks

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

   private Singleton() { // Privaatne konstruktor, et vältida teiste eksemplaride loomist
   }

   static { // Staatiline initsialiseerimisblokk
      INSTANCE = new Singleton(); // Ühe eksemplari loomine
   }
}

Kotlinis Singleton.doSomething() meetodi väljakutse puhul genereerib kompilaator Java-s Singleton.INSTANCE.doSomething() väljakutse.

Lisaks tavalistele objektidele on Kotlinil:

  • Kaassõna objekt (companion object): kasutatakse staatiliste liikmete määratlemiseks klassi sees. Neile pääseb ligi klassi nime kaudu. Iga klass võib omada ainult ühte kaassõna objekti.

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

    Muundub Java-s staatilisteks liikmeteks.

  • Objekti avaldis (object expression): kasutatakse anonüümsete objektide loomisel (nagu Java anonüümklassid).

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

    Muundub Java-s anonüümseks klassiks.