¿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.