Para que serve o companion object em Kotlin e como ele substitui os campos static do Java?
Olá a todos! Recentemente comecei a estudar Kotlin depois do Java e me deparei com uma dificuldade de entendimento. Em Java, eu usava frequentemente campos e métodos static, por exemplo, para criar constantes de classe ou métodos factory:\n\n```java\npublic class User {\n public static final int MIN_AGE = 18;\n \n public static User createGuest() {\n return new User("Convidado");\n }\n \n private String name;\n public User(String name) { this.name = name; }\n}\n```\n\nEm Kotlin, vejo que não existe a palavra-chave static, e em seu lugar é usado o companion object. Mas não entendo completamente por que é necessário um objeto, e não simplesmente static. Por que não poderia ser feito como em Java?\n\nPor exemplo, escrevo assim:\n\n```kotlin\nclass User {\n companion object {\n val MIN_AGE = 18\n fun createGuest() = User("Convidado")