Java“未经检查或不安全的操作”和Java自己的类

时间:2013-03-24 01:11:44

标签: java casting unsafe

在阅读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不是我的选择。

1 个答案:

答案 0 :(得分:1)

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

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

TestClass<T> { ...
    List<LinkedList<T>> listOfLists; ...
    listOfLists = new ArrayList<LinkedList<T>>(capacity);