Avatar ·

Qual é a diferença entre object e companion object em Kotlin? Exemplos

Olá a todos! Comecei a estudar Kotlin e não consigo entender a diferença entre um object comum dentro de uma classe e um companion object. Suponha que eu escreva uma classe simples para trabalhar com um banco de dados: ```kotlin class DatabaseManager { object Config { val HOST = "localhost" val PORT = 5432 } companion object { fun create(): DatabaseManager = DatabaseManager() } } ``` Vejo que ambas as opções criam algo semelhante a membros estáticos do Java. Mas por que então dois mecanismos diferentes? Quando devo usar object e quando companion object? Talvez haja algumas nuances com herança, serialização ou acesso a partir do Java? Ficarei grato por uma explicação detalhada com exemplos. <<>>

Diferença chave: object é um singleton, companion object é um membro estático da classe

Em Kotlin, object e companion object resolvem tarefas diferentes, embora à primeira vista pareçam semelhantes. Vamos analisar cada caso.