Avatar ·

Como criar uma instância de uma interface anônima em Kotlin?

Olá a todos! Comecei a aprender Kotlin depois de Java e me deparei com um problema. Em Java, eu costumava usar classes anônimas para interfaces, por exemplo, para handlers de clique ou listeners. Aqui está como eu fazia em Java:
button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        System.out.println("Clicked!");
    }
});
Agora estou tentando fazer o mesmo em Kotlin, mas não estou conseguindo. Tenho uma interface simples:
interface ClickListener {
    fun onClick()
}
Quero criar uma instância dessa interface diretamente no código, sem criar uma classe separada. Em Java era simples: `new ClickListener() { ... }`. Mas em Kotlin, estou tentando diferentes opções e nenhuma funciona:
// Opção 1 - não compila
val listener = ClickListener() {
    println("Clicked!")
}

// Opção 2 - também erro
val listener = object : ClickListener {
    println("Clicked!")
}