Murl:
Me corrijam se estiver errado, pois também estou aprendendo e inclusive estudando para a prova =)
Acho que uma boa maneira de testar se há possibilidade de realizar um cast é fazer um teste instanceof, certo?
O que eu quero dizer...
SE cat IS-A Dog então posso realizar o cast.
Como neste caso (cat instanceof Dog) é falso, o cast não pode ser realizado!
Certo?
Vlws!
quase isso, quase ... existe so um caso que o cast é permitido, mesmo o instanceOf sendo falso, é quando o valor da variável é nulo...
.... so que vc não poderá realizar esse teste no exame ^^ ...
... mas se passar no teste não falha o cast, porem se não passar e for nulo, o cast é realizado sem lançar exceções ... mas o teste tem q ser realizado para o objeto dentro da variável... por exemplo, neste caso "animal instanceOf Cat" é falso, pois o objeto dentro de animal é um Dog ...
............
e para verificar como é feito o cast...
public final class Class<T> {
public T cast(Object obj) {
if (obj != null && !isInstance(obj))
throw new ClassCastException();
return (T) obj;
}
}
como vc ve, ele so testa o instanceof, se o objeto não for nulo...