Avatar ·

Métodos e variáveis estáticas em Kotlin: como substituir o static do Java?

Olá! Estou migrando de Java para Kotlin e me deparei com um problema. Em Java, eu usava frequentemente métodos e variáveis estáticas para classes utilitárias, constantes ou métodos de fábrica. Por exemplo, uma classe simples em Java: ```java public class MathUtils { public static final double PI = 3.14159; public static double square(double x) { return x * x; } } ``` Tentei escrever o mesmo em Kotlin, mas o compilador dá erro ao tentar usar a palavra-chave `static`. Li que em Kotlin não existe `static` como tal, mas existem "companion objects". Tentei: ```kotlin class MathUtils { companion object { val PI = 3.14159 fun square(x: Double): Double = x * x } } ``` Isso funciona, mas me confundem alguns pontos: 1. Por que preciso escrever `companion object` em vez de apenas `static`? 2. Posso chamar esses métodos sem criar uma instância da classe, como em Java (`MathUtils.square(5.0)`)? 3. Existe uma forma mais simples?