我遇到了使用继承的不兼容返回类型的问题。
public interface A { }
public interface B extends A { }
public interface C {
Map<String, A> getMapping();
}
public interface D extends C {
Map<String, B> getMapping();
}
有没有办法让这项工作?
现在,编译器告诉我,我正在尝试在接口D上使用不兼容的返回类型。
答案 0 :(得分:21)
我建议你使用
interface C {
Map<String, ? extends A> getMapping();
}
这表示&#34;将String
映射到A
或A
&#34; 的子类型的地图。这与Map<String, B>
兼容。
答案 1 :(得分:1)
进行以下更改:
interface C<E extends A> {
Map<String, E> getMapping();
}
interface D extends C<B> {
Map<String, B> getMapping();
}