在阅读HashMap类的源代码时,我注意到他们使用(第149行)
transient Entry<K,V>[] table;
然后他们用(第283行)初始化它:
table = new Entry[capacity];
我无法看到与“未经检查或不安全的操作”相关的警告。
但是当我试图写一些simmliar时:
TestClass<T>{...
LinkedList<T>[] arrayOfLists; ....
arrayOfLists = new LinkedList[capacity]; //warning here
不幸的是使用@SuppressWarnings(“unchecked”)对我来说不是一个选择......
LinkedList<String>[]...
还是一样,所以我的问题是我缺少的是什么,对于一系列不会引起警告的通用集合,这将是一个很好的解决方案。 顺便说一句,@ SuppressWarnning不是我的选择。
答案 0 :(得分:1)
Java集合api中的代码无法完全编译。他们也会收到警告。您没有看到警告,因为使用JDK,您已经拥有包含已编译代码的.class文件(或.jar)。
对于您自己的代码,只需使用链接列表列表:
TestClass<T> { ...
List<LinkedList<T>> listOfLists; ...
listOfLists = new ArrayList<LinkedList<T>>(capacity);