Sobes.tech
Middle

Ce obiecte există în Kotlin și cum sunt compilate?

sobes.tech AI

Răspuns de la AI

Obiectele în Kotlin sunt utilizate pentru a crea singleton-uri. Sunt declarate cu cuvântul cheie object.

object Singleton {
    fun doSomething() {
        println("Salut din singleton!")
    }
}

La compilare, obiectul Kotlin Singleton este transformat într-o clasă Java Singleton cu un câmp static privat INSTANCE și un bloc static de inițializare.

// Exemplu de cod Java generat
public final class Singleton {
   public static final Singleton INSTANCE; // Câmp static pentru singura instanță

   public final void doSomething() { // Metoda obiectului
      System.out.println("Salut din singleton!");
   }

   private Singleton() { // Constructor privat pentru a preveni crearea altor instanțe
   }

   static { // Bloc static de inițializare
      INSTANCE = new Singleton(); // Crearea singurei instanțe
   }
}

Când se apelează metoda obiectului Singleton.doSomething() în Kotlin, compilatorul generează un apel la metoda statică Singleton.INSTANCE.doSomething() în Java.

Pe lângă obiectele obișnuite, în Kotlin există:

  • Obiect însoțitor (companion object): Este folosit pentru a defini membri statici în interiorul unei clase. Accesul se face prin numele clasei. Fiecare clasă poate avea cel mult un obiect însoțitor.

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

    Se compilează în membri statici ai clasei în Java.

  • Expresie de obiect (object expression): Este folosită pentru a crea obiecte anonime (similar cu clasele anonime în Java).

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

    Se compilează într-o clasă anonimă în Java.