【发布时间】:2016-08-15 22:34:56
【问题描述】:
我应该知道这一点,但由于某种原因我无法理解。
为什么我不能将对象列表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")是解决方案,虽然我没有测试过。 -
Java 泛型常见问题解答:angelikalanger.com/GenericsFAQ/FAQSections/…?