我应该知道这一点,但由于某种原因我无法理解这一点。演员表<Object> to List <Map <String,Object >>
为什么我不能将对象列表List<Object>
投射到地图列表List<Map<String, Object>>
?列表中的每个对象都是Map<String, Object>
类型的对象,那么为什么不能投射?
我可以做的是创建一个new ArrayList<Map<String, Object>>();
并迭代列表并添加每个项目的一个强制转换。
List<Object> dataList;
..
//Why doesn't this work?
List<Map<String, Object>> rxData = (List<Map<String, Object>>)dataList;
//This works, but is there a better way?
rxData = new ArrayList<Map<String, Object>>();
for (Object data : dataList) {
rxData.add((Map<String, Object>)data);
}
为什么?因为Java的泛型不可反驳。 JVM无法真正检查剧组是否正确。如果你只是想这样做,我认为'@SuppressWarnings(“unchecked”)'是解决方案,尽管我没有测试。 – markspace
Java泛型常见问题解答:http://www.angelikalanger.com/GenericsFAQ/FAQSections/TechnicalDetails.html#What%20is%20the%20SuppressWarnings%20annotation? – markspace