"尝试使用不兼容的返回类型"和"接口继承"

jjN*_*ord 10 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();
}
Run Code Online (Sandbox Code Playgroud)

有没有办法让这项工作?

现在,编译器告诉我,我正在"尝试在接口D上使用不兼容的返回类型".

aio*_*obe 21

我建议你用

interface C {
    Map<String, ? extends A> getMapping();
}
Run Code Online (Sandbox Code Playgroud)

这表示"映射StringA或者子类型的地图A".这与之兼容Map<String, B>.