Pourquoi a-t-on besoin d'un companion object en Kotlin et comment remplace-t-il les champs static de Java ?
Bonjour à tous ! J'ai récemment commencé à apprendre Kotlin après Java et je suis confronté à une incompréhension. En Java, j'utilisais souvent des champs et méthodes static, par exemple pour créer des constantes de classe ou des méthodes factory :
```java
public class User {
public static final int MIN_AGE = 18;
public static User createGuest() {
return new User("Invité");
}
private String name;
public User(String name) { this.name = name; }
}
```
En Kotlin, je vois qu'il n'y a pas de mot-clé static, et qu'on utilise à la place un companion object. Mais je ne comprends pas complètement pourquoi un objet est nécessaire, et pas simplement static. Pourquoi n'a-t-on pas pu faire comme en Java ?
Par exemple, j'écris ceci :
```kotlin
class User {
companion object {
val MIN_AGE = 18
fun createGuest() = User("Invité")
}
}
```