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