为什么会编译?
今天早些时候,在调试一些代码时,我大吃一惊,发现如下所示的内容不会引发编译时异常:
public Test () {
HashMap map = (HashMap) getList();
}
private List getList(){
return new ArrayList();
}
你可以想象,a是在运行时被抛出的,但是有人可以解释为什么在编译时将a强制转换为a被认为是合法的吗?ClassCastException
List
HashMap