java - 将 Collection<Dependant Interface> 转换为 Collection<Root Interface> 失败

标签 java

我有

接口(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/

相关文章:

java - 如何正确地将数据添加到嵌套 HashMap

java - 如何从单独的包调用方法: Android

java - 有没有办法不使用我正在使用的方法生成相同的数字?

java - 为 Scene Builder 集成为 HTML 制作的 CSS 样式表

Java 弹出按钮

java - Eclipse 找不到/加载主类

java - 尝试在 java 中使用 Jackson 时出现问题

java - Spring MVC 编码非英文参数

java - Java 中 if/else 循环中的变量问题

java - 如何使用准备好的语句