0Pricing
Kotlin Academy · Lektion

Anonyme Objekte

Implementierungen inline erstellen

Anonyme Objekte ist eine kostenlose Kotlin Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Kotlin Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Kotlin Academy-Kurs umfasst insgesamt 4 Lektionen.

Inline-Implementierungen

Ein anonymes Objekt erstellt eine Instanz einer Klasse oder eines Interfaces, ohne eine neue Klasse zu benennen. Verwenden Sie dazu den object-Ausdruck.

interface Greeter { fun greet(): String }

fun main() {
    val g = object : Greeter {
        override fun greet() = "Hi"
    }
    println(g.greet())
}

Ein Interface implementieren

Ein Object-Ausdruck kann ein oder mehrere Interfaces genau an der Stelle implementieren, an der sie benötigt werden.

interface Clickable { fun click() }

fun main() {
    val button = object : Clickable {
        override fun click() = println("Clicked")
    }
    button.click()
}

Klassenmember überschreiben

Sie können anonym von einer offenen Klasse erben und deren Member überschreiben.

open class Animal { open fun sound() = "..." }

fun main() {
    val cat = object : Animal() {
        override fun sound() = "Meow"
    }
    println(cat.sound())
}

Zusätzlichen Zustand speichern

Ein anonymes Objekt kann zusätzlich zu den überschriebenen Membern eigene Properties deklarieren.

fun main() {
    val point = object {
        val x = 3
        val y = 4
    }
    println("${point.x}, ${point.y}")
}

Objekt ohne Supertyp

Wenn Sie keinen Supertyp angeben, ist das Objekt lediglich eine Ad-hoc-Sammlung von Membern, die sich für eine schnelle lokale Gruppierung eignet.

fun main() {
    val config = object {
        val retries = 3
        val timeout = 30
    }
    println(config.retries)
}

Lokale Variablen erfassen

Anonyme Objekte können Variablen aus dem einschließenden Gültigkeitsbereich erfassen, anders als statische verschachtelte Klassen.

fun makeCounter(start: Int): () -> Int {
    var count = start
    val obj = object {
        fun next() = count++
    }
    return { obj.next() }
}

fun main() {
    val c = makeCounter(10)
    println(c())
    println(c())
}

Als Listener

Eine häufige Verwendung besteht darin, eine Inline-Implementierung als Callback oder Listener zu übergeben.

interface OnDone { fun done(result: Int) }

fun compute(cb: OnDone) {
    cb.done(42)
}

fun main() {
    compute(object : OnDone {
        override fun done(result: Int) = println("Got $result")
    })
}

Der Typ eines anonymen Objekts

Wenn ein anonymes Objekt von einer Funktion zurückgegeben wird, ist der abgeleitete Typ der deklarierte Supertyp oder Any, falls keiner vorhanden ist. Zusätzliche Member sind nur lokal sichtbar.

interface Named { val name: String }

fun make(): Named = object : Named {
    override val name = "X"
}

fun main() {
    println(make().name)
}

Anonyme Objekte oder Lambdas

Für Interfaces mit einer Methode ist ein Lambda kürzer. Anonyme Objekte benötigen Sie jedoch, wenn Sie mehrere Member überschreiben oder Zustand speichern müssen.

interface Handler {
    fun onStart()
    fun onStop()
}

fun main() {
    val h = object : Handler {
        override fun onStart() = println("start")
        override fun onStop() = println("stop")
    }
    h.onStart()
    h.onStop()
}

Object-Ausdruck oder Object-Deklaration

Ein Object-Ausdruck erstellt jedes Mal eine neue Instanz. Eine Object-Deklaration (object Name {}) ist ein benanntes Singleton. Beide sehen ähnlich aus, unterscheiden sich aber in ihrer Lebensdauer.

object Singleton { val id = 1 }

fun main() {
    val fresh = object { val id = 2 }
    println(Singleton.id)
    println(fresh.id)
}

Ein kompakter Comparator

Anonyme Objekte sind praktisch für einmalig verwendete Comparatoren oder Strategien.

fun main() {
    val cmp = object : Comparator<Int> {
        override fun compare(a: Int, b: Int) = b - a
    }
    val list = listOf(1, 3, 2).sortedWith(cmp)
    println(list)
}

Kurzer Test

Testen Sie Ihr Verständnis von anonymen Objekten.

Zusammenfassung

Sie haben anonyme Objekte kennengelernt:

  • Der Ausdruck object : Type {} erstellt eine unbenannte Instanz.
  • Sie können Interfaces implementieren, von offenen Klassen erben und Zustand speichern.
  • Sie erfassen lokale Variablen aus dem einschließenden Gültigkeitsbereich.
  • Verwenden Sie sie für Callbacks mit mehreren Methoden; für einzelne Methoden sind Lambdas vorzuziehen.
interface Run { fun go() }

fun main() {
    val r = object : Run { override fun go() = println("go") }
    r.go()
}

Häufig gestellte Fragen

Ist die Lektion „Anonyme Objekte“ kostenlos?

Ja — der vollständige Text von „Anonyme Objekte“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Kotlin Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Kotlin Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Anonyme Objekte“?

Implementierungen inline erstellen Du übst Kotlin Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Kotlin Academy zu starten?

Keine Vorkenntnisse erforderlich. Kotlin Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.

Wie lange dauert die Lektion „Anonyme Objekte“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Kotlin Academy-Lektion Code schreiben und ausführen?

Ja. Jede Kotlin Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Verschachtelte Klassen
  2. Innere Klassen
  3. Anonyme Objekte
  4. Lokale Klassen
← Zurück zu Kotlin Academy