以下代码行导致javac
发出不安全的操作警告:
LinkedList<Node>[] buckets = new LinkedList[bucketCount];
但是,当我尝试通过这样做来解决这个问题时:
LinkedList<Node>[] buckets = new LinkedList<Node>[bucketCount];
我收到generic array creation
错误。我该如何解决这个问题?
答案 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);
祝你好运:)