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

Dúvida no Ex. 6 da Aula 4 - Quando o cast é necessário

Qual a melhor forma de avaliar este método? De ler para ser mais específico.

public static void main(String[] args) { D d = (D) (Y) (B) new D(); }

4 respostas

Manoel, Bom dia .

vou tentar explicar para você como se lê :

um objeto do tipo D chamado d esta recebendo a criação de um objeto D transformado (cast) em do tipo B , transformado no tipo Y e Transformado no tipo D novamente .

lembrando que esse objeto compila , porém gera um erro de ClassCastException pois não é possivel transformar um objeto em interface e como a classe também não implementa o Y não será possivel .

espero ter ajudado , bons estudos

Olá, Celso. Agradeço por ter ajudado ;-) Mas ainda estou com dúvidas sobre este capítulo. Pode responder meu questionamento abaixo?

Até onde o compilador faz a verificação dos tipos? Apenas no no momento em que cria um novo D com casting para B? As conversões seguintes são feitas em tempo de execução? Ou todas as conversões são validadas na compilação? O fato de não é poder transformar um objeto em interface só é verificado na execução da classe Java?

solução!

Manoel,

exatamente esse erro é um erro de execução .

tanto que passa no compilador e não gera erro nenhum . o compilador verifica e entende que está transformando em classe existente no projeto . para ele não importa quais os tipos de classe ou interface e sim se existe ou não no projeto .

mas quando roda o programa ele entende que não é possível transformar um objeto em uma interface . é ai estoura o erro em ClassCastException.

não sei se consegui ser claro na explicação . mas qualquer dúvida poste aqui no forum , se estiver em meu alcance vou te ajudar .

removendo dúvida