Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Só exite Classes Anonimas de interfaces?

Tive a sensação que para eu criar um objeto de classe anonima eu devo passar alguns parâmetros como a interface que ele usa (pelo menos até aqui só vi esses exemplos) ou posso simplesmente criar um objeto semelhante a:

Object anonimo = new {
    int valor;
};

Pelo visto o código acima não compila...

1 resposta
solução!

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.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software