Kotlin Academy · Leçon

Déclaration object : singletons Kotlin

Créez des singletons avec object et comprenez leur cycle de vie.

Leçon 1 sur 413 étapes

Déclaration object : singletons Kotlin est une leçon Kotlin Academy gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Kotlin Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Kotlin Academy comprend 4 leçons au total.

object comme singleton

Une déclaration object crée une instance unique — un singleton initialisé paresseusement et sûr pour les threads — en une seule ligne de code.

Déclarer un singleton

Utilisez object Name { ... } pour déclarer un singleton avec un état et des méthodes.

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

État d’un singleton

Les singletons peuvent contenir un état mutable, accessible depuis n’importe où et partagé globalement.

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

Initialisation paresseuse

L’instance unique est créée la première fois qu’elle est accessible, jamais avant. La JVM garantit que cette opération est sûre pour les threads.

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
}

Implémenter des interfaces

Les singletons peuvent implémenter des interfaces, ce qui est utile pour les rappels et les stratégies.

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

Étendre une classe

Les objets peuvent également hériter de classes ouvertes.

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

Pratique : configuration

Les singletons sont idéaux pour une configuration à l’échelle de l’application qui ne change pas après le démarrage.

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

Pratique : fonctions utilitaires

Regroupez les fonctions auxiliaires sans état associées dans un object, sous forme de méthodes statiques organisées par espace de noms.

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

Égalité et identité

Il n’existe qu’une seule instance ; === renvoie donc toujours true pour la même référence d’objet.

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

object ou classe

Une class ordinaire doit être instanciée. Un object est l’instance elle-même : aucun appel de constructeur n’est nécessaire.

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
}

Sécurité des threads

La création de l’instance du singleton est sûre pour les threads grâce aux garanties du chargement des classes par la JVM. Tout état mutable que vous ajoutez à l’intérieur relève de votre responsabilité.

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

Vérification rapide

Combien d’instances existe-t-il pour une déclaration Kotlin object ?

Récapitulatif

object Name { ... } déclare un singleton paresseux et sûr pour les threads, avec un état, des méthodes, des interfaces et de l’héritage. Utilisez les objets pour la configuration, les groupes de fonctions utilitaires et les services sans état.

Gratuit pour commencer

Apprends Kotlin avec un tuteur IA — gratuit

Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.

Cours
51
Leçons
203

Questions Fréquemment Posées

La leçon « Déclaration object : singletons Kotlin » est-elle gratuite ?

Oui — le texte complet de « Déclaration object : singletons Kotlin » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Kotlin Academy, passe à CoddyKit PRO. Le cours Kotlin Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Déclaration object : singletons Kotlin » ?

Créez des singletons avec object et comprenez leur cycle de vie. Tu pratiques Kotlin Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Kotlin Academy ?

Aucune expérience préalable n'est requise. Kotlin Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.

Combien de temps prend la leçon « Déclaration object : singletons Kotlin » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Kotlin Academy ?

Oui. Chaque leçon Kotlin Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Déclaration object : singletons Kotlin
  2. companion object : membres semblables aux membres statiques
  3. Objets anonymes et expressions object
  4. Méthodes fabrique avec companion object
← Retour à Kotlin Academy