猿问

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

有一个方法这样写是正确的:
publicstaticList>function(){
List>list=newArrayList>();
returnlist;
}
但是以下会报错:
publicstaticList>function(){
List>list=newArrayList>();//报错
returnlist;
}
以下也报错:
publicstaticList>function(){
ArrayList>list=newArrayList>();
returnlist;//报错
}
List接口和ArrayList的实现如何理解?
湖上湖
浏览 354回答 2
2回答

LEATH

这个和Arraylist实现,List接口没有关系.EffectiveJava2nd,item25:Generics,bycontrast,areinvariant:foranytwodistincttypesType1andType2,ListisneitherasubtypenorasupertypeofList[JLS,4.10;Naftalin07,2.5].为了防止下面的情况://Won'tcompile!Listol=newArrayList();//Incompatibletypesol.add("Idon'tfitin");针对你的问题:Listlist=newArrayList();//报错如果按你的逻辑不报错,那么list里可以放入ArrayList,也可以放入LinkedList.显然违反了类型安全.Listlist=newArrayList();list.add(newLinkedList());//OOPS!

梦里花落0921

List和List无论T1和T2是什么关系这两个容器类型都不构成关系List的引用能够指向ArrayList的实例
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答