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;
}
}