Это наименьший пример кода, который я мог бы предложить для иллюстрации проблемы:
public void consumeDerived(Consumer<Derived> derivedConsumer, Derived derivedParameter) {
consumeBase(derivedConsumer, derivedParameter);
}
public void consumeBase(Consumer<? extends Base> baseConsumer, Base baseParameter) {
baseConsumer.accept(baseParameter);
}
Идея состоит в том, что вызов consumeDerived
просто передается методу consumeBase
.Насколько я понимаю, вызов baseConsumer.accept()
должен быть в состоянии принять тип Base
или тип Derived extends Base
.
Однако я получаю сообщение об ошибке: java: incompatible types: Base cannot be converted to capture#1 of ? Base
.
Что мне нужносделать, чтобы сделать эту работу?