gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 08:13:41 27 4
gpt4 key购买 nike

我在尝试将接口(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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com