java - 集合中的类型强制转换
问题描述
我遇到了一个复杂的泛型问题:支持两个集合引用,A和B,其定义如下:
List<Map<String, Object>> A = new ArrayList<>();
List<Map> B = new ArrayList<>();
接下来,将B的所有项目放入A中,但是如果没有使用javac进行强制类型转换,这将无法直接工作。
A.addAll((C)B);
那么,在这种情况下,与 javac 兼容的 C 应该是什么。
(我在公司维护老项目的旧代码,不知道作者为什么要这样编码。[泪])
解决方案
你可以List<Map<String, Object>>
用来投。
A.addAll((List<Map<String, Object>>)(Object)B);
额外的演员Object
需要向编译器解释谁是这里的老板。
推荐阅读
- javascript - 自动填充图像的 HTML 文件路径的 Javascript
- mysql - mysql replace为长文本列返回NULL值
- python - 多处理子进程随机接收 SIGTERM
- python - 从 xyz 坐标列表计算 Pandas 中的距离矩阵
- r - 为什么文档术语矩阵中的行只有零(使用 LDA 函数在 R 中进行主题建模)
- julia - 如何从 Gurobi/JuMP 获取矩阵格式的约束?
- list - SharePoint 2010:列表名称更改导致 listdata.svc 错误
- ruby - Ruby Nokogiri xml 解析
- angular - Angular:数组更改时如何更新视图?
- scala - 在 Apache Spark 的 Scala API 中,使用单引号和 $"" 表示法有区别吗?