0Pricing
Kotlin Academy · Lektion

object-Deklaration: Kotlin-Singletons

Erstellen Sie mit object Singletons und verstehen Sie deren Lebenszyklus.

object-Deklaration: Kotlin-Singletons ist eine kostenlose Kotlin Academy-Lektion auf CoddyKit. Dies ist Lektion 1 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.

object als Singleton

Eine object-Deklaration erstellt mit einer einzigen Codezeile eine einzelne Instanz – ein threadsicheres, verzögert initialisiertes Singleton.

Ein Singleton deklarieren

Verwenden Sie object Name { ... }, um ein Singleton mit Zustand und Methoden zu deklarieren.

object Logger {
    fun log(msg: String) = println("[LOG] $msg")
}
fun main() {
    Logger.log("App started")
    Logger.log("User signed in")
}

Singleton-Zustand

Singletons können veränderlichen Zustand enthalten, der von überall aus zugänglich und global gemeinsam genutzt wird.

object Counter {
    var count = 0
    fun increment() { count++ }
}
fun main() {
    Counter.increment()
    Counter.increment()
    Counter.increment()
    println(Counter.count) // 3
}

Verzögerte Initialisierung

Die einzelne Instanz wird beim ersten Zugriff erstellt – niemals früher. Die JVM garantiert, dass dies threadsicher geschieht.

object Heavy {
    init { println("Initializing Heavy...") }
    fun work() = "done"
}
fun main() {
    println("Before access")
    println(Heavy.work()) // triggers init now
    println(Heavy.work()) // no init again
}

Interfaces implementieren

Singletons können Interfaces implementieren, was für Callbacks und Strategien nützlich ist.

interface Greeter { fun greet(name: String): String }
object EnglishGreeter : Greeter {
    override fun greet(name: String) = "Hello, $name!"
}
fun main() {
    println(EnglishGreeter.greet("Ada"))
}

Eine Klasse erweitern

Objekte können ebenfalls von open-Klassen erben.

open class Animal(val sound: String) {
    fun makeSound() = "The animal says $sound"
}
object Cat : Animal("Meow")
fun main() {
    println(Cat.makeSound())
}

Praxis: Konfiguration

Singletons eignen sich ideal für eine anwendungsweite Konfiguration, die sich nach dem Start nicht mehr ändert.

object AppConfig {
    val apiUrl = "https://api.example.com"
    val timeout = 5000
    val version = "1.0.0"
}
fun main() {
    println("v${AppConfig.version} -> ${AppConfig.apiUrl}")
}

Praxis: Hilfsfunktionen

Gruppieren Sie verwandte zustandslose Hilfsfunktionen in einem object als statischähnliche Methoden mit Namensraum.

object StringUtils {
    fun reverse(s: String) = s.reversed()
    fun capitalize(s: String) = s.replaceFirstChar { it.uppercase() }
}
fun main() {
    println(StringUtils.reverse("Kotlin"))
    println(StringUtils.capitalize("hello"))
}

Gleichheit und Identität

Es gibt nur eine Instanz, daher gibt === für dieselbe Objektreferenz immer true zurück.

object MySingleton
fun main() {
    val a = MySingleton
    val b = MySingleton
    println(a === b) // true
}

object vs class

Eine reguläre class muss instanziiert werden. Ein object ist bereits die Instanz – es wird kein Konstruktor aufgerufen.

class Service { fun ping() = "pong (class)" }
object SingletonService { fun ping() = "pong (object)" }
fun main() {
    val s = Service() // instance per call
    println(s.ping())
    println(SingletonService.ping()) // no instantiation
}

Thread-Sicherheit

Die Erstellung der Singleton-Instanz ist dank der Garantien des JVM-Klassenladens threadsicher. Für jeden veränderlichen Zustand, den Sie darin hinzufügen, sind Sie selbst verantwortlich.

object SharedCounter {
    @Volatile var count = 0
    @Synchronized fun inc() { count++ }
}
fun main() {
    repeat(1000) { SharedCounter.inc() }
    println(SharedCounter.count) // 1000
}

Kurze Überprüfung

Wie viele Instanzen gibt es von einer Kotlin-object-Deklaration?

Zusammenfassung

object Name { ... } deklariert ein threadsicheres, verzögert initialisiertes Singleton mit Zustand, Methoden, Interfaces und Vererbung. Verwenden Sie Objects für Konfigurationen, Gruppen von Hilfsfunktionen und zustandslose Services.

Häufig gestellte Fragen

Ist die Lektion „object-Deklaration: Kotlin-Singletons“ kostenlos?

Ja — der vollständige Text von „object-Deklaration: Kotlin-Singletons“ 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 „object-Deklaration: Kotlin-Singletons“?

Erstellen Sie mit object Singletons und verstehen Sie deren Lebenszyklus. 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 1 von 4.

Wie lange dauert die Lektion „object-Deklaration: Kotlin-Singletons“?

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. object-Deklaration: Kotlin-Singletons
  2. companion object: Statische Member in Kotlin
  3. Anonyme Objekte und Object Expressions
  4. Factory-Methoden mit companion object
← Zurück zu Kotlin Academy