Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Classe Anônima

Boa Noite,

No video 03 - o instrutor Jeferson, informa que usara uma classe anônima, para definir o comportamento do botão:

botaoSalvar.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
    ....
   }
});

Apesar da demonstração da implementação ser simples, não sei se entendi bem esse conceito de classe anônima, existe algum curso, na Alura, que aborda melhor isso?

Att.: Rodrigo Pereira.

4 respostas
solução!

Rodrigo, os tres primeiros cursos de java abordam de certa forma, assim como o curso de Coleções em Java! E vão com mais calma.

Realmente a sintaxe é feia e assusta a primeira vista. O que você está fazendo aí é criando uma classe que estender uma classse abstrata (ou implementa uma interface, que é o caso) e dando new nela, tudo numa mesma linha.

voce poderia quebrar em varias linhas, fazendo:

botaoSalvar.setOnClickListener(new  MeuListener());

// e em outro lugar:
class MeuListener implements View.OnClickListener() {
    @Override
    public void onClick(View view) {
    ....
   }
}

nessa segunda forma, que fica mais clara de ler, você tem de escrever mais e algumas variáveis podem não estar no seu escopo, forçando que você as passasse por construtor, por exemplo.

Bom dia,

View é um package e OnClickListener é uma interface desse package?

oi Rodrigo.

Na verdade ela é uma interface estática interna da classe View.

Pois é, parece assustador e realmente é. Eles poderiam ter simplificado e criado uma interface no mesmo pacote da classe View, mas preferiram esse jeito mais "hardcore", que não precisava.

Mas pra voce que tá usando não faz diferenca. Trate-a como uma interface que se chama View.OnClickListener

Agora entendi, Paulo, Obrigado pela explicação!