小编Lak*_*ita的帖子

在Java源代码中,为什么ArrayList.add的参数为泛型类型T而addAll的参数为泛型类型<? 扩展 E>?

这是Java的源代码ArrayList(使用java 1.8)

public boolean add(E e) {
    ensureCapacityInternal(size + 1);  // Increments modCount!!
    elementData[size++] = e;
    return true;
}
Run Code Online (Sandbox Code Playgroud)
public boolean addAll(Collection<? extends E> c) {
    Object[] a = c.toArray();
    int numNew = a.length;
    ensureCapacityInternal(size + numNew);  // Increments modCount
    System.arraycopy(a, 0, elementData, size, numNew);
    size += numNew;
    return numNew != 0;
}
Run Code Online (Sandbox Code Playgroud)

我不是很清楚为什么我们只能使用Eforadd()而我们可以使用<? extends E>foraddAll()

java generics

1
推荐指数
1
解决办法
64
查看次数

标签 统计

generics ×1

java ×1