Porque da exception em tempo de execução? Não entendi, se B pode ser C, porque o cast não é válido?
Porque da exception em tempo de execução? Não entendi, se B pode ser C, porque o cast não é válido?
Oi Thiago! A exception acontece pois você não pode fazer um cast de uma classe pai para uma classe filho.
Um B
não necessariamente é um C
pode ser um D
por exemplo, por isso que o erro acontece.
Abraços!
Oi Philippe,
Obrigado pela resposta, então mais no vídeo é dito que posso fazer o seguinte:
Object[] objetos = new Object[100];
String s = "certificacao";
objetos[0] = s;
String recuperada = (String) objetos[0];
mediante isto, eu entendo isto:
Object obj = new String("exerc2");
String texto = (String) obj;
e se posso fazer um cast de Object para String, de Pai pra Filho, porque não nesse exemplo do exercício? Concorda comigo que nem todo Object é String?
Oi Thiago, os casos são diferentes, no exemplo do exercicio, é como se você estivesse fazendo:
Object o = new Object();
String s = (String) o;
Nesse caso não podemos fazer um cast para nenhum dos filhos de Object
.
No outro exemplo que vc postou aqui, como você está dando um new String()
, em tempo de execução ele sabe que o tipo de obj
é uma String
e não um Object
.
Abraços!
Obrigado Philippe,
Esclarecido, abraço.