【问题标题】:Java "unchecked or unsafe operations" and Java's own classesJava“未经检查或不安全的操作”和Java自己的类
【发布时间】:2013-03-24 09:16:43
【问题描述】:

在阅读 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 casting unsafe


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-09
      相关资源
      最近更新 更多