ArrayList(Collection <?extends E> c)

Eug*_*ene 5 java api

我知道为了创建ArrayList类型的对象,我需要:

ArrayList<MyType> l = new ArrayList<MyType>();
Run Code Online (Sandbox Code Playgroud)

我知道,因为我在书中看到了这一点.

但是看看ArrayList构造函数的Java SE API,我看到: ArrayList(Collection<? extends E> c)

我不明白,我怎么会想到指定我的新ArrayList对象将包含的对象类型?我如何从这个定义中知道我必须<MyType>在实例化和变量声明期间指定?

Mat*_*nen 3

为了确定声明中是否需要类型参数,您不要查看构造函数,而是查看类定义本身。构造函数的参数与对象本身的类型无关 - 构造函数可以采用任何类型的参数,就像任何其他方法一样。这是类定义:

public class ArrayList<E>
extends AbstractList<E>
implements List<E>, RandomAccess, Cloneable, Serializable
Run Code Online (Sandbox Code Playgroud)

class ArrayList<E>部分说有一个名为 ArrayList 的类,它需要一个类型参数(这里称为 E)。