Сегодня я был ошеломлен, когда отлаживал какой-то код, чтобы обнаружить, что что-то вроде следующего не выбрасывает исключение во время компиляции:
public Test () {
HashMap map = (HashMap) getList();
}
private List getList(){
return new ArrayList();
}
Как вы можете себе представить, a ClassCastException
вызывается во время выполнения, но может ли кто-нибудь объяснить, почему кастинг List
на HashMap
считается законным во время компиляции?