0Pricing
Kotlin Academy · Lección

Declaración object: singletons de Kotlin

Cree singletons con object y comprenda su ciclo de vida.

Declaración object: singletons de Kotlin es una lección gratuita de Kotlin Academy en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Kotlin Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Kotlin Academy incluye 4 lecciones en total.

object como singleton

Una declaración object crea una única instancia —un singleton seguro para subprocesos e inicializado de forma diferida— con una sola línea de código.

Declaración de un singleton

Utilice object Name { ... } para declarar un singleton con estado y métodos.

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

Estado de un singleton

Los singletons pueden contener estado mutable, accesible desde cualquier lugar y compartido globalmente.

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

Inicialización diferida

La única instancia se crea la primera vez que se accede a ella, nunca antes. La JVM garantiza que esto sea seguro para subprocesos.

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
}

Implementación de interfaces

Los singletons pueden implementar interfaces, lo que resulta útil para callbacks y estrategias.

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

Extensión de una clase

Los objetos también pueden heredar de clases open.

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

Práctica: configuración

Los singletons son ideales para la configuración de toda la aplicación que no cambia después del inicio.

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

Práctica: funciones de utilidad

Agrupe funciones auxiliares sin estado en un object como métodos estáticos con espacio de nombres.

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

Igualdad e identidad

Solo existe una instancia, por lo que === siempre devuelve true para la misma referencia de objeto.

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

object frente a class

Una class normal necesita instanciarse. Un object es la instancia; no se invoca ningún constructor.

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
}

Seguridad de subprocesos

La creación de la instancia singleton es segura para subprocesos gracias a las garantías de carga de clases de la JVM. El estado mutable que añada dentro del objeto queda bajo su responsabilidad.

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

Comprobación rápida

¿Cuántas instancias existen de una declaración object de Kotlin?

Resumen

object Name { ... } declara un singleton seguro para subprocesos e inicializado de forma diferida, con estado, métodos, interfaces y herencia. Utilice objetos para configuraciones, grupos de utilidades y servicios sin estado.

Preguntas frecuentes

¿La lección «Declaración object: singletons de Kotlin» es gratis?

Sí — el texto completo de «Declaración object: singletons de Kotlin» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Kotlin Academy, actualiza a CoddyKit PRO. El curso de Kotlin Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Declaración object: singletons de Kotlin»?

Cree singletons con object y comprenda su ciclo de vida. Practicas Kotlin Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Kotlin Academy?

No se requiere experiencia previa. Kotlin Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.

¿Cuánto tiempo toma la lección «Declaración object: singletons de Kotlin»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Kotlin Academy?

Sí. Cada lección de Kotlin Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Declaración object: singletons de Kotlin
  2. companion object: miembros similares a los estáticos en Kotlin
  3. Objetos anónimos y expresiones de objeto
  4. Métodos de fábrica con companion object
← Volver a Kotlin Academy