我有
接口(interface) SpecialData 扩展 RootData { ..}
我无法编译此操作:
Collection<SpecialData> collSpecData = ...;
Collection<RootData> collRootData = ...;
collRootData.add((Collection<RootData>) collSpecData );
已编辑
Collection<SpecialData> collSpecData = ...;
ArrayList<Collection<RootData>> collRootData = ...; // Correction here : adding ArrayList
collRootData.add((Collection<RootData>) collSpecData );
那么,我是否需要迭代 SpecialData
并转换每个字段?或者有更优雅的解决方案吗?
最佳答案
由于您想要将一个集合中的所有元素添加到另一个集合中,因此可以使用 Collection#addAll
:
Collection<SpecialData> collSpecData = ...;
Collection<RootData> collRootData = ...;
collRootData.addAll(collSpecData);
<小时/>
根据您的编辑,您可以通过重新定义 collRootData
来进行快速修复如ArrayList<Collection<? extends RootData>>
。这是基于您当前代码的基本示例:
Collection<SpecialData> collSpecData = new ArrayList<SpecialData>();
ArrayList<Collection<? extends RootData>> collRootData = new ArrayList<Collection<? extends RootData>>();
collRootData.add(collSpecData);
关于java - 将 Collection<Dependant Interface> 转换为 Collection<Root Interface> 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17885264/