Я экспериментирую с использованием дженериков для поддержки настраиваемой структуры делегирования объектов (декораторов, оболочек). Я хочу построить цепочку делегаторов, реализующих целевой интерфейс, а также общий интерфейс делегатора.
У меня есть такая схема:
class Test {
static interface Delegator {}
static class DelegatorChain> {}
static interface Foo {}
static class FooDelegator implements Delegator, Foo {}
public static void main(String[] args) {
DelegatorChain chain = new DelegatorChain();
}
}
Но при попытке создать экземпляр переменной цепочки
компилятор жалуется :
Несоответствие привязки: Тип Test.FooDelegator не является допустимой заменой ограниченного параметра
типа
> Test.DelegatorChain
Я признаю, что дженерики для меня похожи на магию , но я могу каким-то образом признать, что FooDelegator - это не Foo, который расширяет Delegator
Учитывая, что ясно, чего я хочу достичь, могу ли я что-нибудь сделать относительно дженерики, чтобы исправить это, или мне просто лучше об этом забыть?