集合中的类型强制转换
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
需要向编译器解释谁是这里的老板。
我遇到了一个复杂的泛型问题: 支持两个集合引用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
需要向编译器解释谁是这里的老板。