Sobes.tech
Middle

Que objetos existem em Kotlin e como são compilados?

sobes.tech IA

Resposta da IA

Os objetos em Kotlin são usados para criar singleton. São declarados com a palavra-chave object.

object Singleton {
    fun doSomething() {
        println("Olá do singleton!")
    }
}

Ao compilar, o objeto Kotlin Singleton é transformado numa classe Java Singleton com um campo estático privado INSTANCE e um bloco de inicialização estático.

// Exemplo de código Java gerado
public final class Singleton {
   public static final Singleton INSTANCE; // Campo estático para a única instância

   public final void doSomething() { // Método do objeto
      System.out.println("Olá do singleton!");
   }

   private Singleton() { // Construtor privado para evitar criar outras instâncias
   }

   static { // Bloco de inicialização estático
      INSTANCE = new Singleton(); // Criação da única instância
   }
}

Ao chamar o método do objeto Singleton.doSomething() em Kotlin, o compilador gera uma chamada ao método estático Singleton.INSTANCE.doSomething() em Java.

Para além de objetos normais, em Kotlin existem:

  • Objeto companheiro (companion object): Usado para definir membros estáticos dentro de uma classe. Acesso através do nome da classe. Cada classe pode ter no máximo um objeto companheiro.

    class MyClass {
        companion object {
            const val MY_CONSTANT = "some value"
            fun create(): MyClass {
                return MyClass()
            }
        }
    }
    

    Compila-se em membros estáticos da classe em Java.

  • Expressão de objeto (object expression): Usada para criar objetos anónimos (semelhante às classes anónimas em Java).

    val listener = object : MyInterface {
        override fun onClick() {
            println("Clicado!")
        }
    }
    

    Compila-se em uma classe anónima em Java.