Ответ 1
Самый простой способ понять код Java - сделать Class2 интерфейсом.
Вы не можете ограничить параметр типа, чтобы расширять несколько параметров класса или типа. Кроме того, вы не можете использовать super здесь.
Есть ли способ определить общее ограничение в Java, которое будет аналогично следующему С# generic constratint?
class Class1<I,T> where I : Interface1, Class2 : I
Я пытаюсь сделать это вот так:
class Class1<I extends Interface1, T extends I & Class2>
Но компилятор жалуется на часть "Class2": за параметром Type не могут следовать другие ограничения.
Самый простой способ понять код Java - сделать Class2 интерфейсом.
Вы не можете ограничить параметр типа, чтобы расширять несколько параметров класса или типа. Кроме того, вы не можете использовать super здесь.
Этот код компилируется здесь отлично:
interface Interface1 {}
class Class2 {}
class Class1<I extends Interface1, T extends Class2 & Interface1> {}
Зачем вам нужен тип я там, когда вы допускаете только Interface1? (вы ничего не узнаете в своем классе о I, чем расширяете интерфейс1)