在Collections.addAll上获取编译错误

时间:2011-04-28 18:40:29

标签: java compiler-errors

import java.util.*;

public class MyClass {
  public static void main(String[] args) {
    List<String> a = new ArrayList<String>();
    a.add("1");
    a.add("2");
    a.add("3");
    List<String> v = new Vector<String>();
    Collections.addAll(v,a);

     System.out.println(v);

  }
}

错误: /home/compilerauto/sessions/141/MyClass.java:10:java.util.Collections中的addAll(java.util.Collection,T ...)无法应用于(java.util.List,java.util.List) )

为什么会这样?

2 个答案:

答案 0 :(得分:5)

addAll的方法签名是:

public static <T> boolean addAll(Collection<? super T> c, T... elements)

而不是

public static <T> boolean addAll(Collection<? super T> c, Collection<? super T> elements)

由于T... elements可以表示为T[] elements,请尝试:

Collections.addAll(v,a.toArray());

或使用List界面的addAll:

v.addAll(a);

答案 1 :(得分:1)

That form of addAll不需要两个Collection,只需要一个Collection,然后在该集合中添加相同类型的多个项目。

您只需要v.addAll(a)Collection本身的实例方法。