首页 > 解决方案 > 集合中的类型强制转换

问题描述

我遇到了一个复杂的泛型问题:支持两个集合引用,A和B,其定义如下:

List<Map<String, Object>>  A = new ArrayList<>();
List<Map> B = new ArrayList<>();

接下来,将B的所有项目放入A中,但是如果没有使用javac进行强制类型转换,这将无法直接工作。

A.addAll((C)B);

那么,在这种情况下,与 javac 兼容的 C 应该是什么。

(我在公司维护老项目的旧代码,不知道作者为什么要这样编码。[泪])

标签: javagenericscollections

解决方案


你可以List<Map<String, Object>>用来投。

A.addAll((List<Map<String, Object>>)(Object)B); 

额外的演员Object需要向编译器解释谁是这里的老板。


推荐阅读