conversión explícita de superclase a subclase

public class Animal {
    public void eat() {}
}

public class Dog extends Animal {
    public void eat() {}

    public void main(String[] args) {
        Animal animal = new Animal();
        Dog dog = (Dog) animal;
    }
}

La asignaciónDog dog = (Dog) animal; no genera un error de compilación, pero en tiempo de ejecución genera unClassCastException. ¿Por qué el compilador no puede detectar este error?

Respuestas a la pregunta(7)

Su respuesta a la pregunta