Java "unchecked or unsafe operations"和Java自己的类

标签 java casting unsafe

在阅读 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/

相关文章:

c# - 如何使用 C# 获取 char**?

c# - 这段代码中有什么不安全的地方?

java - AsyncTask "onPostExecute"永远不会被调用

java - 使用Spring boot和多个数据源,如何在配置类之外指定@primary?

java - 获取 ClassCastException : java. lang.Integer cannot be cast to java.lang.String 错误而无需强制转换

c - 从 c 中的 uint32_t 值中提取 uint8_t 字节的可移植方法

c# - 从托管(C#)调用不安全的代码。读取字节数组

java - 扩展接口(interface)

java - 如何使用单个Java ServerSocket读取安全的Web请求并处理Web套接字请求?

c++ - reinterpret_cast 抛弃限定词