Sobes.tech
Middle

Ποια αντικείμενα υπάρχουν στο Kotlin και πώς μεταγλωττίζονται;

sobes.tech AI

Απάντηση από AI

Τα αντικείμενα σε Kotlin χρησιμοποιούνται για τη δημιουργία singleton. Δηλώνονται με τη λέξη-κλειδί object.

object Singleton {
    fun doSomething() {
        println("Γειά από το singleton!")
    }
}

Κατά τη μεταγλώττιση, το Kotlin αντικείμενο Singleton μετατρέπεται σε μια Java κλάση Singleton με ένα ιδιωτικό στατικό πεδίο INSTANCE και ένα στατικό μπλοκ αρχικοποίησης.

// Παράδειγμα γεννημένου κώδικα Java
public final class Singleton {
   public static final Singleton INSTANCE; // Στατικό πεδίο για το μόνο αντίγραφο

   public final void doSomething() { // Μέθοδος αντικειμένου
      System.out.println("Γειά από το singleton!");
   }

   private Singleton() { // Ιδιωτικός κατασκευαστής
   }

   static { // Στατικό μπλοκ αρχικοποίησης
      INSTANCE = new Singleton(); // Δημιουργία του μόνο αντιγράφου
   }
}

Όταν καλείται η μέθοδος του αντικειμένου Singleton.doSomething() σε Kotlin, ο μεταγλωττιστής δημιουργεί μια κλήση στη στατική μέθοδο Singleton.INSTANCE.doSomething() σε Java.

Εκτός από τα κανονικά αντικείμενα, στο Kotlin υπάρχουν:

  • Συνοδευτικό αντικείμενο (companion object): Χρησιμοποιείται για τον ορισμό στατικών μελών μέσα σε μια κλάση. Η πρόσβαση γίνεται μέσω του ονόματος της κλάσης. Κάθε κλάση μπορεί να έχει το πολύ ένα συνοδευτικό αντικείμενο.

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

    Μεταγλωττίζεται σε στατικά μέλη της κλάσης σε Java.

  • Έκφραση αντικειμένου (object expression): Χρησιμοποιείται για τη δημιουργία ανώνυμων αντικειμένων (όπως οι ανώνυμες κλάσεις σε Java).

    val listener = object : MyInterface {
        override fun onClick() {
            println("Κλίκ!")
        }
    }
    

    Μεταγλωττίζεται σε μια ανώνυμη κλάση σε Java.