Galerinha, eu sei que acabei de perguntar uma coisa bem básica, mas assim, ainda tenho uma outra dúvida.
No test killer tem outra questão:
interface Foo {}
class Alpha implements Foo { }
class Beta extends Alpha {}
class Delta extends Beta {
public static void main( String[] args) {
Beta x = new Beta();
// insert code here
}
}
Which code, inserted at line 16, will cause a
java.lang.ClassCastException?
A. Alpha a = x;
B. Foo f= (Delta)x;
C. Foo f= (Alpha)x;
D. Beta b = (Beta)(Alpha)x;
Resposta: B
Dúvida:
Dentre as opções eu achava que nenhuma estivesse errada, mas fazendo teste no Eclipse, ví que realmente a B estoura a ClassCastException. Mas me corrija quem souber por favor. Eu achei que f conseguiria receber o Cast de Delta pq “Delta” extende Beta, que extende Alpha que implementa Foo.
Fora que eu achei muito louco a alternativa D, “Beta b = (Beta)(Alpha)x;”…, alguém já usou esse tipo de Cast em alguma aplicação?