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

Cast

Esse código gera uma exception quando executamos. O que não entendo pq ele compila se Y e A não possuem nenhum tipo de relacionamento, como o compilador aceitou o casting?

interface Z {}
interface W {}
interface Y extends Z, W {}
class B {}
class C extends B implements Y {}
class D extends B implements Z, W {}
class E extends C {}
class A {
    public static void main(String[] args) {
        Y y = (Y) new A();
    }
}
2 respostas
solução!

Leandro,

Realmente A não possui nenhum vinculo com Y , mas para fazer Cast não precisa ter vinculo mesmo .

o que está acontecendo neste cast , para y do tipo Y receber um objeto do tipo A , é necessário de um cast para o tipo do objeto Y . ou melhor dizendo Transformar um objeto do tipo A em tipo Y

o erro que acontece é em tempo de execução porque o objeto do tipo A não pode ser convertido para o objeto do tipo Y devido que Y é um interface .

espero ter ajudado , Bons Estudos

Oi Celso,

sim, você tem razão para um cast não é necessário nenhum tipo de relacionamento. Obrigado.