在阅读 HashMap 类的源代码时,我注意到它们使用(第 149 行)
transient Entry<K,V>[] table;
然后他们用(第 283 行)初始化它:
table = new Entry[capacity];
而且我看不到与“未经检查或不安全的操作”相关的警告。
但是当我尝试写一些类似的东西时:
TestClass<T>{...
LinkedList<T>[] arrayOfLists; ....
arrayOfLists = new LinkedList[capacity]; //warning here
不幸的是,使用 @SuppressWarnings("unchecked") 对我来说不是一个选择......
LinkedList<String>[]...
仍然相同,所以我的问题是我缺少什么区别,以及对于不会引起警告的通用集合数组来说,什么是一个好的解决方案。 顺便说一句,不幸的是,@SuppressWarnning 不适合我。
最佳答案
Java 集合 API 中的代码无法顺利编译。他们也会收到警告。您不会看到警告,因为使用 JDK,您已经拥有包含已编译代码的 .class 文件(或 .jar)。
对于您自己的代码,只需使用链接列表的列表:
TestClass<T> { ...
List<LinkedList<T>> listOfLists; ...
listOfLists = new ArrayList<LinkedList<T>>(capacity);
关于Java "unchecked or unsafe operations"和Java自己的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15594048/