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(); }
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(); }
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?
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