Sobes.tech
Junior

Fala sobre o objeto companion em Kotlin.

sobes.tech IA

Resposta da IA

companion object em Kotlin é usado para definir membros de classe (propriedades e funções) que são comuns a todas as instâncias dessa classe, bem como para acessá-los sem criar uma instância da classe. É essencialmente um equivalente aos membros estáticos em Java, mas implementado como um objeto dentro da classe.

Principais características:

  • Instância única: Dentro da classe, pode haver apenas um companion object.
  • Inicialização: É inicializado na primeira carga da classe.
  • Acesso a membros privados: Tem acesso aos membros privados da classe externa.
  • Nomeação: Por padrão, tem o nome Companion, mas pode ser explicitamente nomeado.
  • Implementação de interfaces: Pode implementar interfaces.

Exemplo de uso:

class MyClass {
    companion object {
        const val TAG = "MyClass" // Constante

        fun createInstance(): MyClass { // Método de fábrica
            return MyClass()
        }
    }

    fun doSomething() {
        println("A fazer algo...")
    }
}

fun main() {
    println(MyClass.TAG) // Acesso ao membro do companion object
    val instance = MyClass.createInstance() // Uso do método de fábrica
    instance.doSomething()
}

Vantagens:

  • Mais semântico: Permite agrupar membros "estáticos" relacionados em um só lugar.
  • Flexibilidade: Pode implementar interfaces, o que é útil para padrões de projeto.
  • Acesso a membros privados: Facilita a implementação de métodos de fábrica e singletons dentro da classe.