Ola Luiz.
É sim verdade que não é possivel criar uma instância diretamente de uma interface. Você consegue faze-la de duas formas:
- Criando uma classe implementadora, e instanciando ela.
- 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.