Avatar ·

¿Cuál es la diferencia entre object y companion object en Kotlin? Ejemplos

¡Hola a todos! Empecé a estudiar Kotlin y no puedo entender la diferencia entre un object normal dentro de una clase y un companion object. Supongamos que escribo una clase simple para trabajar con una base de datos: ```kotlin class DatabaseManager { object Config { val HOST = "localhost" val PORT = 5432 } companion object { fun create(): DatabaseManager = DatabaseManager() } } ``` Veo que ambas opciones crean algo similar a los miembros static de Java. Pero, ¿por qué entonces dos mecanismos diferentes? ¿Cuándo se debe usar object y cuándo companion object? ¿Quizás hay algunos matices con la herencia, la serialización o el acceso desde Java? Agradecería una explicación detallada con ejemplos. <<>>

Diferencia clave: object es un singleton, companion object es un miembro estático de la clase

En Kotlin, object y companion object resuelven diferentes tareas, aunque a primera vista parecen similares. Analicemos cada caso.