Avatar ·

Por qué en Kotlin se necesita companion object y cómo reemplaza los campos static de Java?

¡Hola a todos! Recientemente comencé a estudiar Kotlin después de Java y me encontré con una falta de comprensión. En Java solía usar campos y métodos static, por ejemplo, para crear constantes de clase o métodos de fábrica: ```java public class User { public static final int MIN_AGE = 18; public static User createGuest() { return new User("Invitado"); } private String name; public User(String name) { this.name = name; } } ``` En Kotlin veo que no existe la palabra clave static, en su lugar se usa companion object. Pero no entiendo del todo por qué se necesita un objeto y no simplemente static. ¿Por qué no se pudo hacer como en Java? Por ejemplo, escribo así: ```kotlin class User { companion object { val MIN_AGE = 18 fun createGuest() = User("Invitado") } private val name: String constructor(name: String) { this.name = name } } ``` Pero me parece que esto es solo un envoltorio innecesario. ¿Cuál es la ventaja de este enfoque? ¿Por qué Ko...