java - 将 Object 转换为 ArrayList<String[]> 时为 "Warning: [unchecked] unchecked cast"

标签 java generics arraylist casting java-8

奇怪的情况 - 下面是代码:

ArrayList<String[]> listArr = new ArrayList<>();
Object[] obj = new Object[]{"str", listArr};

String str = (String) obj[0];//OK
ArrayList<String[]> list = (ArrayList<String[]>) obj[1];//warning: [unchecked] unchecked cast

构建项目时(在项目属性中使用编译器选项 -Xlint:unchecked),我收到一条警告:

warning: [unchecked] unchecked cast
ArrayList list = (ArrayList) obj[1];
required: ArrayList
found: Object

但是以同样的方式转换 String 是可以的。这里有什么问题?

最佳答案

这是因为编译器无法验证list级别的内部类型,所以需要先对list进行验证。以及单独的内部类型。

而不是 ArrayList<String[]> list = (ArrayList<String[]>) obj[1];

应该是 ArrayList<?> list = (ArrayList<?>) obj[1];

关于java - 将 Object 转换为 ArrayList<String[]> 时为 "Warning: [unchecked] unchecked cast",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28873190/

相关文章:

java - 从 DefaultTableModel 中删除后使用该行的数据

java - 如何在java中的自定义类型ArrayList上使用Contains?

java - 访问 hashmap 的值

java - SmallWorldExample 的实现

java - 在 SPRING 中调用 ajax 响应时显示 Not Acceptable 错误

c# - 尝试设计一个小型消息处理程序类来模拟 C# 事件。这种方法有什么缺点?

java - Java 中的类型参数

c# - 使用正确的派生类型调用泛型方法

java - 如何在 Storm 中发射和收集数组列表?

java - 随机排列数组列表,不重复