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

Instanciando Interface

Olá Pessoal tudo bem?

Estou revendo as aulas e me veio uma dúvida, pesquisando na web, as pessoas dizem que não é possível instanciar uma interface, mas pelo exemplo do professor e alguns testes que eu fiz, consigo sim instanciar e criar um objeto, mas logicamente a interface me obriga a implementar o método abstrato dela. A pergunta é, e certo fazer isso? E porque consigo instanciar uma interface?

2 respostas
solução!

Ola Luiz.

É sim verdade que não é possivel criar uma instância diretamente de uma interface. Você consegue faze-la de duas formas:

  1. Criando uma classe implementadora, e instanciando ela.
  2. Usando classes anonimas

Essa segunda é bem implícita, e talvez seja isso que você esteja fazendo. Mas veja que não está criando uma instancia direta da interface, mas criando uma classe em tempo de execução e já instanciando a mesma.

Exemplo

interface QualquerCoisa {
  void acaoDaCoisa();
}

public class Execucao {

 public static void main(String[] args) {
    //criando uma classe da interface e ja instanciando
    QualquerCoisa q = new QualquerCoisa() {
       public void acaoDaCoisa(){
             System.out.println("acao qualquer feita");
       }
    };

    q.acaoDaCoisa();
 }

}

O problema de classes anonimas é que vc não consegue reaproveita-las em outro canto do seu código, ele está preso ao trecho que vc criou. Se em outro lugar precisar desse mesmo código, iria ter duplicidade. Mas nesse caso, é aconselhado a criar uma classe normal implementadora, e instanciar onde precisar.

Olá, desculpe a demora para responder, agora ficou claro, não crio um instancia, mas sim uma classe anônima, estava imaginando isso. E que me confundi, igual ao seu exemplo, parece que esta sendo instanciada a classe, mas na verdade estamos criando uma classe anônima. Excelente explicação amigo, muito obrigado.