Olá amigos, estou com uma dúvida em uma questão do ExamLabs, gostaria que me ajudassem:
tenho o seguinte código
interface I {}
class A {}
class B implements I {}
class C extends A {}
class D {}
final class E{}
class InstOf {
public static void main(String args[]) {
System.out.println(new A() instanceof I); //linha 11: compila
System.out.println(new E() instanceof I); //linha 12: dá um erro de compilação
}
}
Não estou conseguindo entender porque a linha 11 compila e a linha 12 dá um erro de compilação.
A explicação do exame diz que é porque a class E é final... mas não consigo entender a lógica disso, pra mim a única funcionalidade do modificador final é não permitir que a classe seja extendida por outras.
System.out.println(new Object() instanceof I);
final class E implements I{
}
A coisa mais cabível que consegui imaginar é que por reflection é possível fazer com que uma classe implemente uma interface dinâmicamente, por isso ele aceitaria outras classes (tipo a classe D ou a classe A) e inserindo o modificador final isso não seria possível...
Não sei se ficou claro, alguém poderia me ajudar?
Abs.