Me sorprendió el día de hoy en la depuración de código para encontrar que algo como lo siguiente no lanzar una excepción en tiempo de compilación:¿Por qué compila esto?
public Test() {
HashMap map = (HashMap) getList();
}
private List getList(){
return new ArrayList();
}
Como se puede imaginar, un ClassCastException
se lanza en tiempo de ejecución, pero puede alguien explicar por qué el lanzamiento de un List
a un HashMap
se considera legal en tiempo de compilación?
http://stackoverflow.com/questions/19895304/classcastexception-vs-cannot-cast-compilation-error/37190861#37190861 –