修复抱怨不安全操作的“通用数组创建”

时间:2013-03-22 10:24:48

标签: java

以下代码行导致javac发出不安全的操作警告:

LinkedList<Node>[] buckets = new LinkedList[bucketCount];

但是,当我尝试通过这样做来解决这个问题时:

LinkedList<Node>[] buckets = new LinkedList<Node>[bucketCount];

我收到generic array creation错误。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

简而言之,arrays of generic types are problematic

buckets转变为ArrayList的{​​{1}}:

LinkedList

这样你就可以获得编译时类型的安全性。

答案 1 :(得分:0)

LinkedList只有两个构造函数,一个是默认的,另一个接受扩展Collection的参数,

public LinkedList(Collection<? extends E> c) {
this();
addAll(c);
}

这就是说LinkedList不能有初始化大小,如果初始化容器的容量是必要的,你最好使用ArrayList,如下所示:

List<Node> list = new ArrayList<Node>(bucketCount);
祝你好运:)