Sobes.tech
Middle

Quels sont les objets en Kotlin et comment sont-ils compilés?

sobes.tech IA

Réponse de l'IA

Les objets en Kotlin sont utilisés pour créer des singletons. Ils sont déclarés avec le mot-clé object.

object Singleton {
    fun doSomething() {
        println("Bonjour du singleton!")
    }
}

Lors de la compilation, l'objet Kotlin Singleton est transformé en une classe Java Singleton avec un champ statique privé INSTANCE et un bloc d'initialisation statique.

// Exemple de code Java généré
public final class Singleton {
   public static final Singleton INSTANCE; // Champ statique pour la seule instance

   public final void doSomething() { // Méthode de l'objet
      System.out.println("Bonjour du singleton!");
   }

   private Singleton() { // Constructeur privé pour empêcher la création d'autres instances
   }

   static { // Bloc d'initialisation statique
      INSTANCE = new Singleton(); // Création de l'unique instance
   }
}

Lorsqu'on appelle la méthode de l'objet Singleton.doSomething() en Kotlin, le compilateur génère un appel à la méthode statique Singleton.INSTANCE.doSomething() en Java.

En plus des objets normaux, Kotlin propose:

  • Objet compagnon (companion object): Utilisé pour définir des membres statiques à l'intérieur d'une classe. On y accède via le nom de la classe. Chaque classe peut avoir au plus un objet compagnon.

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

    Se compile en membres statiques de la classe en Java.

  • Expression d'objet (object expression): Utilisée pour créer des objets anonymes (similaires aux classes anonymes en Java).

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

    Se compile en une classe anonyme en Java.