集合中的类型强制转换

Type force conversion in collections

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

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

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

A.addAll((C)B);

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

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

您可以使用List<Map<String, Object>>进行投射。

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

额外转换为 Object 需要向编译器解释谁是这里的老板。