Подтвердить что ты не робот

Двойное общее ограничение на класс в Java: расширяет ConcreteClass & I

Есть ли способ определить общее ограничение в Java, которое будет аналогично следующему С# generic constratint?

class Class1<I,T> where I : Interface1, Class2 : I

Я пытаюсь сделать это вот так:

class Class1<I extends Interface1, T extends I & Class2>

Но компилятор жалуется на часть "Class2": за параметром Type не могут следовать другие ограничения.

4b9b3361

Ответ 1

Самый простой способ понять код Java - сделать Class2 интерфейсом.

Вы не можете ограничить параметр типа, чтобы расширять несколько параметров класса или типа. Кроме того, вы не можете использовать super здесь.

Ответ 2

Этот код компилируется здесь отлично:

interface Interface1 {}

class Class2 {}

class Class1<I extends Interface1, T extends Class2 & Interface1> {}

Зачем вам нужен тип я там, когда вы допускаете только Interface1? (вы ничего не узнаете в своем классе о I, чем расширяете интерфейс1)