Kotlin Academy · Lektion

object-deklaration: Kotlin-singletons

Opret singletons med object, og forstå deres livscyklus.

Lektion 1 af 413 trin

object-deklaration: Kotlin-singletons er en gratis Kotlin Academy-lektion på CoddyKit. Dette er lektion 1 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i Kotlin Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Kotlin Academy-kurset indeholder 4 lektioner i alt.

object som singleton

En object-deklaration opretter en enkelt instans – en trådsikker, lazy-initialiseret singleton – med én kodelinje.

Deklaration af en singleton

Brug object Name { ... } til at deklarere en singleton med tilstand og metoder.

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

Singleton-tilstand

Singletons kan indeholde foranderlig tilstand, som er tilgængelig overalt og delt globalt.

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

Lazy-initialisering

Den enkelte instans oprettes første gang, den tilgås – aldrig tidligere. JVM'en garanterer, at dette er trådsikkert.

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
}

Implementering af interfaces

Singletons kan implementere interfaces, hvilket er nyttigt til tilbagekald og strategier.

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

Nedarvning fra en klasse

Objekter kan også nedarve fra åbne klasser.

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

Praktisk: Konfiguration

Singletons er ideelle til konfiguration på tværs af appen, som ikke ændres efter opstart.

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

Praktisk: Hjælpefunktioner

Gruppér relaterede tilstandsløse hjælpefunktioner i et object som navnerumsafgrænsede, statiklignende metoder.

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"))
}

Lighed og identitet

Der findes kun én instans, så === returnerer altid true for den samme objektreference.

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

object kontra class

En almindelig class skal instantieres. Et object er selve instansen – der kaldes ikke nogen konstruktør.

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
}

Trådsikkerhed

Oprettelsen af singleton-instansen er trådsikker takket være JVM's garantier ved klasseindlæsning. Du er selv ansvarlig for al foranderlig tilstand, du tilføjer indeni.

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

Hurtigt tjek

Hvor mange instanser findes der af en Kotlin-object-deklaration?

Opsummering

object Name { ... } deklarerer en trådsikker lazy-singleton med tilstand, metoder, interfaces og nedarvning. Brug objects til konfiguration, grupper af hjælpefunktioner og tilstandsløse tjenester.

Gratis at komme i gang

Lær Kotlin med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
51
Lektioner
203

Ofte stillede spørgsmål

Er lektionen “object-deklaration: Kotlin-singletons” gratis?

Ja — alle 3 lektioner i læringssporet Kotlin Academy, inklusive “object-deklaration: Kotlin-singletons”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Kotlin Academy-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “object-deklaration: Kotlin-singletons”?

Opret singletons med object, og forstå deres livscyklus. Du øver dig i Kotlin Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Kotlin Academy?

Der kræves ingen tidligere erfaring. Kotlin Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 1 af 4.

Hvor lang tid tager lektionen “object-deklaration: Kotlin-singletons”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Kotlin Academy-lektion?

Ja. Alle Kotlin Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. object-deklaration: Kotlin-singletons
  2. companion object: Static-lignende medlemmer i Kotlin
  3. Anonyme objekter og object expressions
  4. Factory-metoder med companion object
← Tilbage til Kotlin Academy