Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Porque da exception em tempo de execução?

Porque da exception em tempo de execução? Não entendi, se B pode ser C, porque o cast não é válido?

4 respostas

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?

solução!

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.