Ern*_*dis 6 java generics casting arraylist 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
Run Code Online (Sandbox Code Playgroud)
构建项目时(-Xlint:unchecked在项目属性中使用编译器选项),我收到一个警告:
警告:[unchecked] unchecked cast
ArrayList list =(ArrayList)obj [1];
required:
找到ArrayList :Object
但是以相同的方式构建String是可以的.这里有什么问题?
这是因为编译器无法在列表级别验证内部类型,因此您需要首先验证列表.并且内部类型单独.
代替 ArrayList<String[]> list = (ArrayList<String[]>) obj[1];
它应该是
ArrayList<?> list = (ArrayList<?>) obj[1];
| 归档时间: |
|
| 查看次数: |
1693 次 |
| 最近记录: |