java.util.ArrayList中的泛型

java.util.ArrayList中的泛型,java,generics,arraylist,Java,Generics,Arraylist,我已经打开了java.util.ArrayList源代码,但我不明白一件事:如果ArrayList被参数化,为什么elementData[]数组的类型是Object public class ArrayList<E> extends ... { ......... private transient Object[] elementData; ......... public boolean add(E e) {/*More code*/} } *有哪些优点和缺点?

我已经打开了java.util.ArrayList源代码,但我不明白一件事:如果ArrayList被参数化,为什么elementData[]数组的类型是Object

public class ArrayList<E> extends ... {
  .........
  private transient Object[] elementData;
  .........
  public boolean add(E e) {/*More code*/}
}

*有哪些优点和缺点?

每次使用原始类型创建列表时,例如:

List
List=newarraylist
()

构造函数将所有数据转换为数组,该数组必须是对象[]数组,位于:


public ArrayList(Collection
这并不能解释为什么它不能是
E[]
我把这个解释放在其中一个链接上。我知道你在最后链接到它是“你也可以看一看”。但除此之外,这些都与问题无关,即为什么不
E[]
private transient E[] elementData
    list.add(new String("VALUE"));
    list.add(new Integer("1"));

    for (Object c : list) {
        System.out.println(c.toString());
    }