Java &引用;试图使用不兼容的返回类型;使用接口继承
我遇到了一个使用继承的不兼容返回类型的问题Java &引用;试图使用不兼容的返回类型;使用接口继承,java,inheritance,interface,Java,Inheritance,Interface,我遇到了一个使用继承的不兼容返回类型的问题 public interface A { } public interface B extends A { } public interface C { Map<String, A> getMapping(); } public interface D extends C { Map<String, B> getMapping(); } 公共接口A{} 公共接口B扩展了{} 公共接口C{ Map getMa
public interface A { }
public interface B extends A { }
public interface C {
Map<String, A> getMapping();
}
public interface D extends C {
Map<String, B> getMapping();
}
公共接口A{}
公共接口B扩展了{}
公共接口C{
Map getMapping();
}
公共接口D扩展了C{
Map getMapping();
}
有没有办法让这一切顺利进行
现在编译器告诉我,我正在接口D上“尝试使用不兼容的返回类型”。我建议您使用
interface C {
Map<String, ? extends A> getMapping();
}
接口C{
Map getMapping();
}
这表示“将
字符串
映射到A
或A
的子类型的映射”。这与Map
兼容。请进行以下更改:
interface C<E extends A> {
Map<String, E> getMapping();
}
interface D extends C<B> {
Map<String, B> getMapping();
}
接口C{
Map getMapping();
}
接口D扩展了C{
Map getMapping();
}
@alfasin更正,问题已更新-抱歉!这对你的问题是一个很大的改变@user3707125:那就有你的解决方案了。听起来像是一个答案,伙计们……是的!这让我发疯。我声明了一个接口方法来返回集
,并声明了一个实现类集来返回集
。这导致了问题中的错误。将接口声明更改为set非常感谢。这让我抓狂,这是一个非常简单的解决方案。。。。而不是让程序员使用变通方法?