1

在阅读 HashMap 类的源代码时,我注意到他们使用了(第 149 行)

transient Entry<K,V>[] table;

然后他们用 (line 283) 初始化它:

table = new Entry[capacity];

而且我看不到与“未经检查或不安全的操作”相关的警告。

但是当我试图写一些类似的东西时:

TestClass<T>{...
    LinkedList<T>[] arrayOfLists; ....
    arrayOfLists = new LinkedList[capacity]; //warning here

不幸的是,使用 @SuppressWarnings("unchecked") 对我来说不是一个选择......

LinkedList<String>[]...

还是一样,所以我的问题是我缺少什么区别,对于一组不会引起警告的通用集合来说,什么是一个好的解决方案。顺便说一句,@SuppressWarnning 不幸不是我的选择。

4

1 回答 1

1

Java 集合 api 中的代码不会被干净地编译。他们也会收到警告。您看不到警告,因为使用 JDK,您已经拥有包含已编译代码的 .class 文件(或 .jar)。

对于您自己的代码,只需使用链表列表:

TestClass<T> { ...
    List<LinkedList<T>> listOfLists; ...
    listOfLists = new ArrayList<LinkedList<T>>(capacity);
于 2013-03-24T01:16:43.653 回答