sábado, 2 de abril de 2011

Dicas de Programação: O que é classe Anônima em Java?

Esta vai para uma pessoa que estava com esta dúvida:

Classe anônima é uma classe que não é declarada explicitamente no código.

Hã???

Acho que um exemplo encaixa bem aqui. :P

Por exemplo, se eu fosse listar meus funcionários em ordem alfabética, eu faria primeiro uma classe que implementa de Comparator:

import java.util.*;

public class ComparaFuncionario implements Comparator<Funcionario> {
public int compare(Funcionario f1, Funcionario f2) {
return f1.getNome().compareTo(f2.getNome());
}
}

E depois usaria a instância da classe no método sort do Collections:

List<Funcionario> listaDeFuncionarios = new ArrayList<Funcionario>();
...
java.util.Collections.sort(listaDeFuncionarios,new ComparaFuncionario());
...
System.out.println(listaDeFuncionarios);

Legal, isso funciona... mas dá trabalho fazer uma classe só para ordenar...
Então, é isso que uma classe anônima ajuda! Em vez de eu declarar explicitamente a classe, eu faço assim:

java.util.Collections.sort(listaDeFuncionarios,new Comparator<Funcionario>() {
public int compare(Funcionario f1, Funcionario f2) {
return f1.getNome().compareTo(f2.getNome());
}
});

Como vocês sabem, não dá para instanciar uma interface, portanto a instrução new Comparator() seria inválida... Mas conseguimos fazer isso, por que a gente implementa o método da interface depois da instanciação, essas instruções juntas é o que define-se de classe Anônima.

Fala a verdade, Java é complicado mesmo... :P

Um comentário:

Unknown disse...

Uia.. mto legal kra, nunca tinha visto esse conceito sendo aplicado..

Aproveitando Take, se vc me permite uma sugestão.. já viu em algum blog de programação q o pessoal taca syntax highlighter nos códigos?

Acho que fica bacana hhehehe (mas eh sua opiniao). abrassss!