java - 使用接口(interface)实现时为 "Inconvertible types"

标签 java interface

我在尝试将接口(interface)的实现强制转换为接口(interface)时遇到意外错误(“不可转换类型”)。

我得到以下界面

public interface IAbc {...}

以及另一个类中的以下方法

public class SomeClass {
    public doSomething(Iterable<IAbc> abcs) {...}
}

我编写了以下类(class)

public class MyAbc implements IAbc {...}

我在其他地方有一个类似的方法

public class MyClass {
    public Iterable<MyAbc> getMyAbcs() {...}
}

我希望我可以将它们很好地链接起来,如下所示:

public void doSomethingWithThings(SomeClass sc, MyClass mc) {
    sc.doSomething(mc.getMyAbcs());
}

但是 NetBeans 给出以下错误:

error: inconvertible types
sc.doSomething(mc.getMyAbcs());
required: Iterable
found: Iterable

我尝试类型转换,但是 Iterable<IAbc> abc = (Iterable<IAbc>)mc.getMyAbcs();导致同样的错误。

如何将接口(interface)的 Iterable 实现传递给需要接口(interface) Iterable 的方法?

最佳答案

Iterable<MyAbc>不是 Iterable<IAbc> ,尽管 MyAbcIAbc .

尝试使用通配符,如下所示:

public doSomething(Iterable<? extends IAbc> abcs) {...}

这与数组相反,数组:MyAbc[]Iabc[]

这是一个很好的教程,可了解更多信息 http://docs.oracle.com/javase/tutorial/extra/generics/wildcards.html

关于java - 使用接口(interface)实现时为 "Inconvertible types",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15228169/

相关文章:

java - gradle排除子项目的运行任务

java - Netbeans 无法连接到服务器。原因: The cipher 'aes252-cbc' is required

java接口(interface)和新类

java - Hibernate 与接口(interface)的关联

java - 实现接口(interface)的类和那个接口(interface)之间有什么关系吗?

java - 可以使用具体类来实现抽象吗?

c# - 将数据从 java 应用程序传输到 c#

java - eclipseoxy版本中java 9中选择JRE运行环境

Java 从另一个数组的通用运行时类型创建数组

c++ - 由于混合 CRTP 和接口(interface)而崩溃?