Ответ 1
Я предлагаю вам использовать
interface C {
Map<String, ? extends A> getMapping();
}
Это говорит "Карта, которая отображает String
в A
или подтип A
". Это совместимо с Map<String, B>
.
У меня возникает проблема с несовместимыми типами возврата с использованием наследования.
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.
Я предлагаю вам использовать
interface C {
Map<String, ? extends A> getMapping();
}
Это говорит "Карта, которая отображает String
в A
или подтип A
". Это совместимо с Map<String, B>
.
Внесите следующие изменения:
interface C<E extends A> {
Map<String, E> getMapping();
}
interface D extends C<B> {
Map<String, B> getMapping();
}