为了账号安全,请及时绑定邮箱和手机立即绑定

ArrayList的实现与List接口如何理解

ArrayList的实现与List接口如何理解

江户川乱折腾 2019-04-13 08:45:37
有一个方法这样写是正确的:publicstaticListfunction(){Listlist=newArrayList();returnlist;}但是以下会报错:publicstaticListfunction(){Listlist=newArrayList();//报错returnlist;}以下也报错:publicstaticListfunction(){ArrayListlist=newArrayList();returnlist;//报错}List接口和ArrayList的实现如何理解?
查看完整描述

2 回答

?
犯罪嫌疑人X

TA贡献2080条经验 获得超4个赞

这个和Arraylist实现,List接口没有关系.
EffectiveJava2nd,item25:
Generics,bycontrast,areinvariant:foranytwodistincttypesType1
andType2,Listisneitherasubtypenorasupertypeof
List[JLS,4.10;Naftalin07,2.5].
为了防止下面的情况:
//Won'tcompile!
Listol=newArrayList();//Incompatibletypes
ol.add("Idon'tfitin");
针对你的问题:
List>list=newArrayList>();//报错
如果按你的逻辑不报错,那么list里可以放入ArrayList,也可以放入LinkedList.
显然违反了类型安全.
List>list=newArrayList>();
list.add(newLinkedList());//OOPS!
                            
                            
查看完整回答
反对 回复 2019-04-13
?
一只名叫tom的猫

TA贡献1906条经验 获得超3个赞

List和List无论T1和T2是什么关系这两个容器类型都不构成关系
List的引用能够指向ArrayList的实例
                            
查看完整回答
反对 回复 2019-04-13
  • 2 回答
  • 0 关注
  • 473 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消