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

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

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

湖上湖 2019-03-30 09:32:46
有一个方法这样写是正确的:publicstaticListfunction(){Listlist=newArrayList();returnlist;}但是以下会报错:publicstaticListfunction(){Listlist=newArrayList();//报错returnlist;}以下也报错:publicstaticListfunction(){ArrayListlist=newArrayList();returnlist;//报错}List接口和ArrayList的实现如何理解?
查看完整描述

2 回答

?
LEATH

TA贡献1936条经验 获得超6个赞

这个和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-03-30
?
梦里花落0921

TA贡献1772条经验 获得超6个赞

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

添加回答

举报

0/150
提交
取消