public ArrayList(Collection c)中的“?”和“E”是什么意思?

 我来答
一个著名神经病
推荐于2019-10-20 · TA获得超过1.1万个赞
知道小有建树答主
回答量:53
采纳率:100%
帮助的人:7178
展开全部

?是“任意类”的意思,extends继承不多说,E是指定类型。

首先,楼上说的不错,是泛型。这是java 1.5以后引入的。

从此以后,定义一个空的ArrayList需要这样,比如我需要一个MyClass的顺序表,则:

ArrayList<MyClass> myList = new ArrayList<MyClass>();

这是因为ArrayList类的声明是public class ArrayList<E>。

而此时,MyClass就是“指定类型”E了,意味着所有ArrayList类中声明的E, 换成了MyClass。

同理如果我要使用你所提到的public ArrayList(Collection<? extends E> c)来构造一个ArrayList,

则:

如我有MySubClass是MyClass的子类。

Collection<MyClass> myCollection;  //myCollection里有很多元素。

Collection<MySubClass> mySubCollection;  //mySubCollection里有很多元素。

ArrayList<MyClass> myList = new ArrayList<MyClass>(myCollection);

也可以:

ArrayList<MyClass> myList = new ArrayList<MyClass>(mySubCollection);

意思是,凡是MyClass或者MyClass的子类的Collection均可以构造成ArrayList<MyClass>

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式