2008-09-25 2 views
11

Есть ли способ определить общее ограничение в Java, которое будет аналогично следующему C# generic constratint?Двойное общее ограничение на класс в Java: extends ConcreteClass & I

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

Я пытаюсь сделать это следующим образом:

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

Но компилятор жалуется на «class2» часть: параметр типа не может сопровождаться другими границами.

+0

`extands`? Вы имели в виду `extends`? - также линия C# не помещает никаких ограничений на тип T, возможно, вы допустили ошибку? – BrainSlugs83 2015-04-25 21:01:43

+0

Это опечатка, и это Java. – axk 2016-01-06 14:32:18

ответ

4

Самый простой способ я могу видеть, разрешающих код Java, чтобы сделать Class2 интерфейс.

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

5

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

interface Interface1 {} 

class Class2 {} 

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

Почему вам нужен я типа там, когда вы только предположить Interface1 в любом случае? (Вы не будете знать больше ничего в своем классе о я чем она простирается Interface1)