Avatar ·

Como substituir métodos estáticos do Java em Kotlin: guia completo

Olá! Comecei a estudar Kotlin recentemente depois de alguns anos trabalhando com Java, e fiquei confuso. Em Java, eu costumava usar métodos estáticos para criar classes utilitárias, fábricas ou constantes. Por exemplo: ```java public class StringUtils { public static boolean isEmpty(String str) { return str == null || str.trim().isEmpty(); } public static final String APP_NAME = "MyApp"; } ``` Em Kotlin, não posso simplesmente escrever `static`. Quando tentei: ```kotlin class StringUtils { static fun isEmpty(str: String?): Boolean { // Erro! return str == null || str.trim().isEmpty() } } ``` O compilador dá erro: "Modifier 'static' is not applicable inside 'top level'". Pesquisei no Google e encontrei sobre `companion object`, mas não entendi completamente como funciona. Por exemplo, quero: 1. Criar uma classe utilitária com métodos que possam ser chamados sem criar uma instância (como `Math.abs()`). 2. Definir constantes acessíveis de qualquer lugar.