[Prévia] [Próxima] [Prévia por assunto] [Próxima por assunto]
[Índice cronológico] [Índice de assunto]

Classloading - completando



    Só para completar - o ClassCastException é jogado porque a VM deve 
checar o "tipo dinâmico" da referência e o "tipo dinâmico" do objeto 
retornado e fazer um teste simplão, no momento da atribuição, para 
determinar se os tipos dinâmicos em ambos os lados da expressão coincidem.

    Abraços,

       Giuliano

>      Bem, daí o código de A faz uma referência à classe B que, por 
> malícia, é delegada por L1 ao loader L2. O loader L2 carrega a classe 
> B e encontra nela uma referência ao texto da classe C1 e a carrega. O 
> tipo dinâmico da referência retornada pelo método G passa a ser <C1, 
> L2>. Quando o código malicioso tenta atribuir a uma referência do tipo 
> dinâmico <C1, L1> um objeto do tipo dinâmico <C1, L2>, ele toma um 
> ClassCastException.