Deklaracja object: singletony w Kotlinie
Twórz singletony za pomocą object i poznaj ich cykl życia.
Deklaracja object: singletony w Kotlinie to bezpłatna lekcja Kotlin Academy na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Kotlin Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Kotlin Academy zawiera 4 lekcji w sumie.
object jako singleton
Deklaracja object tworzy pojedynczą instancję — bezpieczny wątkowo singleton inicjalizowany leniwie — za pomocą jednej linii kodu.
Deklarowanie singletona
Użyj object Name { ... }, aby zadeklarować singleton ze stanem i metodami.
object Logger {
fun log(msg: String) = println("[LOG] $msg")
}
fun main() {
Logger.log("App started")
Logger.log("User signed in")
}Stan singletona
Singletony mogą przechowywać mutowalny stan — dostępny z dowolnego miejsca i współdzielony globalnie.
object Counter {
var count = 0
fun increment() { count++ }
}
fun main() {
Counter.increment()
Counter.increment()
Counter.increment()
println(Counter.count) // 3
}Inicjalizacja leniwa
Pojedyncza instancja jest tworzona przy pierwszym dostępie — nigdy wcześniej. JVM gwarantuje, że odbywa się to bezpiecznie wątkowo.
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
}Implementowanie interfejsów
Singletony mogą implementować interfejsy, co jest przydatne w przypadku callbacków i strategii.
interface Greeter { fun greet(name: String): String }
object EnglishGreeter : Greeter {
override fun greet(name: String) = "Hello, $name!"
}
fun main() {
println(EnglishGreeter.greet("Ada"))
}Rozszerzanie klasy
Obiekty mogą również dziedziczyć po klasach open.
open class Animal(val sound: String) {
fun makeSound() = "The animal says $sound"
}
object Cat : Animal("Meow")
fun main() {
println(Cat.makeSound())
}Praktyka: konfiguracja
Singletony doskonale nadają się do konfiguracji obejmującej całą aplikację, która nie zmienia się po uruchomieniu.
object AppConfig {
val apiUrl = "https://api.example.com"
val timeout = 5000
val version = "1.0.0"
}
fun main() {
println("v${AppConfig.version} -> ${AppConfig.apiUrl}")
}Praktyka: funkcje narzędziowe
Powiązane bezstanowe funkcje pomocnicze można grupować w object jako metody podobne do statycznych, umieszczone w jednej przestrzeni nazw.
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"))
}Równość i tożsamość
Istnieje tylko jedna instancja, więc === zawsze zwraca true dla tej samej referencji obiektu.
object MySingleton
fun main() {
val a = MySingleton
val b = MySingleton
println(a === b) // true
}object a class
Zwykła class wymaga utworzenia instancji. object jest instancją — nie wywołuje się konstruktora.
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
}Bezpieczeństwo wątkowe
Tworzenie instancji singletona jest bezpieczne wątkowo dzięki gwarancjom JVM dotyczącym ładowania klas. Za każdy mutowalny stan dodany wewnątrz odpowiadasz samodzielnie.
object SharedCounter {
@Volatile var count = 0
@Synchronized fun inc() { count++ }
}
fun main() {
repeat(1000) { SharedCounter.inc() }
println(SharedCounter.count) // 1000
}Szybkie sprawdzenie
Ile instancji istnieje dla deklaracji Kotlin object?
Podsumowanie
object Name { ... } deklaruje bezpieczny wątkowo, leniwie inicjalizowany singleton ze stanem, metodami, interfejsami i dziedziczeniem. Używaj obiektów do konfiguracji, grup funkcji narzędziowych i bezstanowych usług.
Ucz się Kotlin dzięki korepetycjom AI — za darmo
Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.
- Kursy
- 51
- Lekcje
- 203
Często zadawane pytania
Czy lekcja „Deklaracja object: singletony w Kotlinie” jest bezpłatna?
Tak — pełny tekst „Deklaracja object: singletony w Kotlinie” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Kotlin Academy, przejdź na CoddyKit PRO. Kurs Kotlin Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Deklaracja object: singletony w Kotlinie”?
Twórz singletony za pomocą object i poznaj ich cykl życia. Ćwiczysz Kotlin Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Kotlin Academy?
Nie wymagamy żadnego doświadczenia. Kotlin Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.
Ile czasu zajmuje lekcja „Deklaracja object: singletony w Kotlinie”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Kotlin Academy?
Tak. Każda lekcja Kotlin Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Deklaracja object: singletony w Kotlinie
- companion object: elementy podobne do statycznych w Kotlinie
- Obiekty anonimowe i wyrażenia object
- Metody fabrykujące z companion object