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

Dúvida Interface Java 8

O código abaixo compila normalmente.

Mas esta linha me deixou confuso:

I i = new I(){};

Eu entendi que ali estou criando uma nova classe do tipo I. Para mim esse I é a classe recem criada e não a interface.

Se fosse a interface, eu não poderia instancia-la.

Estou um pouco confuso.

public class A{
    public static void main(String args[]){

        I i = new I(){};

        System.out.println(I.x + i.getValue() +""+ i);
    }
}

interface I{

    int x=10;

    public default int getValue(){
        return 5;
    }

}
3 respostas
solução!

Boa noite, Anderson! Como vai?

Na realidade o I é referente à interface mesmo! Tanto é verdade que se vc colocar um método que não seja default dentro da interface, vc verá que a linha onde vc faz I i = new I(){} vai começar a dar problema, avisando que vc precisa implementar o método criado! O nome disso é classe anônima, algo muito conhecido principalmente pelo pessoal que trabalha com Android!

Exemplo prático:

public class A {
    public static void main(String args[]) {

        I i = new I() {};  // essa linha agora não compila mais pois é necessário implementar o método I.teste()!

        System.out.println(I.x + i.getValue() +""+ i);
    }
}

interface I{

    int x=10;

    public void teste();

    public default int getValue() {
        return 5;
    }

}

Grande abraço e bons estudos!

Muito obrigado Gabriel. Ficou bem claro.

Por nada, Anderson! Sempre que tiver qualquer dúvida é só mandar aqui no fórum!

Grande abraço e bons estudos!