Sobes.tech
Middle

Welke objecten zijn er in Kotlin en hoe worden ze gecompileerd?

sobes.tech AI

Antwoord van AI

Objecten in Kotlin worden gebruikt om singleton-objects te maken. Ze worden gedeclareerd met het sleutelwoord object.

object Singleton {
    fun doSomething() {
        println("Hallo van singleton!")
    }
}

Bij compilatie wordt het Kotlin Singleton object omgezet in een Java klasse Singleton met een private statisch veld INSTANCE en een statisch initialisatieblok.

// Voorbeeld van gegenereerde Java-code
public final class Singleton {
   public static final Singleton INSTANCE; // Statisch veld voor de enige instantie

   public final void doSomething() { // Objectmethode
      System.out.println("Hallo van singleton!");
   }

   private Singleton() { // Privé constructor om het maken van andere instanties te voorkomen
   }

   static { // Statisch initialisatieblok
      INSTANCE = new Singleton(); // Aanmaken van de enige instantie
   }
}

Het aanroepen van de methode van het object Singleton.doSomething() in Kotlin, genereert een statische methode-aanroep Singleton.INSTANCE.doSomething() in Java.

Naast gewone objecten, zijn er in Kotlin:

  • Companion object (companion object): Wordt gebruikt om statische leden binnen een klasse te definiëren. Toegang is via de klassennaam. Elke klasse kan maximaal één companion object hebben.

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

    Wordt gecompileerd tot statische leden van de klasse in Java.

  • Objectexpressie (object expression): Wordt gebruikt om anonieme objecten te maken (vergelijkbaar met anonieme klassen in Java).

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

    Wordt gecompileerd tot een anonieme klasse in Java.