Jakie obiekty są w Kotlinie i jak są kompilowane?
sobes.tech AI
Odpowiedź od AI
Obiekty w Kotlinie są używane do tworzenia singletonów. Są deklarowane słowem kluczowym object.
object Singleton {
fun doSomething() {
println("Witaj z singletona!")
}
}
Podczas kompilacji obiekt Kotlin Singleton jest przekształcany w klasę Java Singleton z prywatnym statycznym polem INSTANCE i statycznym blokiem inicjalizacji.
// Przykład wygenerowanego kodu Java
public final class Singleton {
public static final Singleton INSTANCE; // Pole statyczne dla jedynego egzemplarza
public final void doSomething() { // Metoda obiektu
System.out.println("Witaj z singletona!");
}
private Singleton() { // Prywatny konstruktor, aby nie można było tworzyć innych egzemplarzy
}
static { // Statyczny blok inicjalizacji
INSTANCE = new Singleton(); // Tworzenie jedynego egzemplarza
}
}
Wywołanie metody obiektu Singleton.doSomething() w Kotlinie, kompilator generuje wywołanie statycznej metody Singleton.INSTANCE.doSomething() w Javie.
Oprócz zwykłych obiektów, w Kotlinie istnieją:
-
Obiekt towarzyszący (
companion object): Używany do definiowania statycznych członków wewnątrz klasy. Dostęp do nich jest przez nazwę klasy. Każda klasa może mieć nie więcej niż jeden obiekt towarzyszący.class MyClass { companion object { const val MY_CONSTANT = "some value" fun create(): MyClass { return MyClass() } } }Kompiluje się do statycznych członków klasy w Javie.
-
Wyrażenie obiektu (
object expression): Używane do tworzenia anonimowych obiektów (podobnie do anonimowych klas w Javie).val listener = object : MyInterface { override fun onClick() { println("Kliknięto!") } }Kompiluje się do anonimowej klasy w Javie.