Classes anônimas são classes internas sem nome. Como elas não têm nome, não podemos usá-los para criar instâncias de classes anônimas. Como resultado, temos que declarar e instanciar classes anônimas em uma única expressão no ponto de uso.
Uma declaração de classe anônima é uma expressão; portanto, ela deve fazer parte de uma declaração (isso explica por que colocamos um ponto-e-vírgula no final da declaração):
Podemos instanciar uma classe anônima a partir de uma interface:
Runnable action = new Runnable() {
@Override
public void run() {
}
};
Podemos instanciar uma classe anônima de uma existente, usamos a seguinte sintaxe:
new Book("Design Patterns") {
@Override
public String description() {
return "Famous GoF book.";
}
}
Entre parênteses, especificamos os parâmetros exigidos pelo construtor da classe que estamos estendendo.