奇怪的情况 - 下面是代码:
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
在项目属性中),我收到一个警告:
警告:[未选中] 未选中的强制转换
ArrayList 列表 = (ArrayList) obj[1];
必需:数组列表
成立:
目的
但以同样的方式转换 String 是可以的。这里有什么问题?
这是因为编译器无法在列表级别验证内部类型,因此需要首先对列表进行验证。以及单独的内部类型。
代替ArrayList<String[]> list = (ArrayList<String[]>) obj[1];
它应该是ArrayList<?> list = (ArrayList<?>) obj[1];
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)