object-deklaration: Kotlins singleton-objekt
Skapa singleton-objekt med object och förstå deras livscykel.
object-deklaration: Kotlins singleton-objekt är en gratis lektion i Kotlin Academy på CoddyKit. Detta är lektion 1 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Kotlin Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Kotlin Academy innehåller totalt 4 lektioner.
object som singleton
En object-deklaration skapar en enda instans – en trådsäker singleton som initieras lazy – med en enda kodrad.
Deklarera en singleton
Använd object Name { ... } för att deklarera en singleton med tillstånd och metoder.
object Logger {
fun log(msg: String) = println("[LOG] $msg")
}
fun main() {
Logger.log("App started")
Logger.log("User signed in")
}Singleton-tillstånd
Singletoner kan innehålla muterbart tillstånd som är åtkomligt överallt och delas globalt.
object Counter {
var count = 0
fun increment() { count++ }
}
fun main() {
Counter.increment()
Counter.increment()
Counter.increment()
println(Counter.count) // 3
}Lazy-initiering
Den enda instansen skapas första gången den används – aldrig tidigare. JVM garanterar att detta är trådsäkert.
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
}Implementera gränssnitt
Singletoner kan implementera gränssnitt, vilket är användbart för callbacks och strategier.
interface Greeter { fun greet(name: String): String }
object EnglishGreeter : Greeter {
override fun greet(name: String) = "Hello, $name!"
}
fun main() {
println(EnglishGreeter.greet("Ada"))
}Ärva från en klass
Objects kan även ärva från klasser som är open.
open class Animal(val sound: String) {
fun makeSound() = "The animal says $sound"
}
object Cat : Animal("Meow")
fun main() {
println(Cat.makeSound())
}Praktiskt: konfiguration
Singletoner passar utmärkt för konfiguration som gäller hela appen och inte ändras efter uppstart.
object AppConfig {
val apiUrl = "https://api.example.com"
val timeout = 5000
val version = "1.0.0"
}
fun main() {
println("v${AppConfig.version} -> ${AppConfig.apiUrl}")
}Praktiskt: hjälpfunktioner
Samla relaterade tillståndslösa hjälpfunktioner i ett object som namnrymdsbaserade, statikliknande 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"))
}Likhet och identitet
Det finns bara en instans, så === returnerar alltid true för samma objektreferens.
object MySingleton
fun main() {
val a = MySingleton
val b = MySingleton
println(a === b) // true
}object kontra class
En vanlig class måste instansieras. Ett object är själva instansen – ingen konstruktoranrop behövs.
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ådsäkerhet
Skapandet av singleton-instansen är trådsäkert tack vare JVM:s garantier för klassinläsning. Allt muterbart tillstånd som du lägger till inuti är ditt ansvar.
object SharedCounter {
@Volatile var count = 0
@Synchronized fun inc() { count++ }
}
fun main() {
repeat(1000) { SharedCounter.inc() }
println(SharedCounter.count) // 1000
}Snabb kontroll
Hur många instanser finns det av en Kotlin-object-deklaration?
Sammanfattning
object Name { ... } deklarerar en trådsäker, lazy singleton med tillstånd, metoder, gränssnitt och arv. Använd objects för konfiguration, grupper av hjälpfunktioner och tillståndslösa tjänster.
Lär dig Kotlin med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 51
- Lektioner
- 203
Vanliga frågor
Är lektionen ”object-deklaration: Kotlins singleton-objekt” gratis?
Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Kotlin Academy, inklusive ”object-deklaration: Kotlins singleton-objekt”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Kotlin Academy innehåller totalt 4 lektioner.
Vad lär jag mig i ”object-deklaration: Kotlins singleton-objekt”?
Skapa singleton-objekt med object och förstå deras livscykel. Ni övar på Kotlin Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Kotlin Academy?
Du behöver inga förkunskaper. Utbildningen i Kotlin Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 1 av 4.
Hur lång tid tar lektionen ”object-deklaration: Kotlins singleton-objekt”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Kotlin Academy-lektionen?
Ja. Varje Kotlin Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- object-deklaration: Kotlins singleton-objekt
- companion object: static-liknande medlemmar i Kotlin
- Anonyma objekt och objektuttryck
- Factory-metoder med companion object