使用接口作为返回类型时出错[Java]

我有这两个 Java接口:

第一个是:

public abstract interface A {

}

第二个是:

public abstract interface B {
    public abstract Set<A> methodName();
}

然后,我将这两个接口实现为:

public class AImpl implements A {

}

和:

public class BImpl implements B {
    private Set<AImpl> p;  

    public Set<A> methodName() {
        return this.p;
    }
}

我不明白为什么我得到关于methodName()的实现的以下错误:

Type mismatch: cannot convert from Set<AImpl> to Set<A>

非常感谢你.

设置<&的AIMP1 GT;与Set< A>不完全相同,你无法转换它.
您可以:

>将p声明为Set< A>
>将p声明为Set<?扩展A>
> return Set< AImpl>在methodName()中

更多细节:
如果AImpl实现/扩展A然后List< AImpl>没有实现/扩展List< A>.
名单&LT ;?扩展A>意味着这是扩展/实现A的东西的列表.

看看Wildcards and subtyping in Java Tutorial

相关文章
相关标签/搜索