当前位置: 首页 > 面试题库 >

将对象强制转换为ArrayList时出现“警告:[unchecked] unchecked cast”

郎雅昶
2023-03-14
问题内容

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

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在项目属性中带有编译器选项),我得到一个警告:

警告:[unchecked]未经检查的强制转换
ArrayList list =(ArrayList)obj [1];
必需:
找到ArrayList :对象

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


问题答案:

这是因为编译器无法在列表级别验证内部类型,因此您需要首先验证列表。以及内部类型分别。

代替 ArrayList<String[]> list = (ArrayList<String[]>) obj[1];

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



 类似资料:
  • 奇怪的情况-下面是代码: 构建项目时(在项目属性中使用编译器选项Xlint:unchecked),我得到一个警告: 警告:[未选中]未选中的强制转换 ArrayList list=(ArrayList)obj[1]; 必需:ArrayList 找到:对象 但用同样的方法来浇铸字符串是可以的。这里有什么问题?

  • 我在这里遇到了一个关于带列表的泛型有界类型的小问题。请帮帮我! 有什么方法可以克服这个问题,或者我可以安全地压制警告吗?

  • 我在antoher的项目中有完全相同的代码,但它在这里继续崩溃。我有。我真的不确定问题出在哪里。我尝试过切换gradle版本,从切换到。不管怎样,一切都失败了

  • 我有档案卡。java和Util。java,我不允许修改它。出于我自己的目的,我创建了一个类Card2,它扩展了Card,并添加了一个方法和一个方法。Util类包含一个采用ArrayList的方法 我的理解是,在这种情况下,

  • 问题内容: Java中是否有命令将ArrayList转换为对象数组。我知道如何将每个对象从arrayList复制到对象数组,但是我想知道是否会自动完成。 我想要这样的东西: 问题答案: 像标准Collection.toArray(T [])之 类的东西应该可以满足您的需求(请注意实现): 附带说明一下,您应该考虑将定义定义为类型,而不是,这样可以避免某些特定于实现的定义,而这些定义可能并不真正适用

  • 对API控制器的远程调用(通过RestTemboard)(从一侧返回已知对象的List([]),从远程侧返回未知类型的对象)返回