Pessoal antes de ver esta questão do test Killer achava que não era possivel instanciar uma interface. Segue a questão 15:
Question 15
Given:
10. interface Foo { int bar(); }
11. public class Sprite {
12. public int fubar( Foo foo) { return foo.bar(); }
13. public void testFoo() {
14. fubar(
15. // insert code here
16.);
17. }
18. }
Which code, inserted at line 15, allows the class Sprite to compile?
A. Foo { public int bar() { return 1; } }
B. new Foo { public int bar() { return 1; } }
C. newFoo() { public int bar(){return 1; } }
D. new class Foo { public int bar() { return 1; } }
A resposta correta é a letra C. Alguem pode me dar uma explicação conceitual porque isto funciona, ja que eu achava que a interface é um comportamento e nao pode ser instanciado.
Segue a implementação que utilizei para teste
public interface Foo {
int bar();
}
public class Sprite {
public int fubar(Foo foo){
return foo.bar();
}
public void testFoo(){
fubar(new Foo(){@Override
public int bar() {
return 1;
}});
}
}
Obrigado