首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么会这样编译呢?

为什么会这样编译呢?
EN

Stack Overflow用户
提问于 2009-09-29 22:35:15
回答 2查看 570关注 0票数 18

今天早些时候,当我调试一些代码时,我大吃一惊,发现下面这样的代码没有抛出编译时异常:

代码语言:javascript
复制
 public Test () { 
     HashMap map = (HashMap) getList(); 
 }

 private List getList(){
     return new ArrayList();
 }

可以想象,ClassCastException是在运行时抛出的,但是有人能解释一下为什么在编译时将List转换为HashMap是合法的吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-09-29 22:38:11

因为可以想象,getList()可能会返回同样实现ListHashMap的子类。不太可能,是的,但有可能,因此是可编译的。

票数 29
EN

Stack Overflow用户

发布于 2009-09-29 22:38:21

首先,List是一个接口。没有理由不存在HashMap的子类,它也实现了List接口。在这种情况下,它将是完全有效的。

票数 17
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1495308

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档