2008-09-25 76 views
11

有没有一种方法可以在Java中定义一个类似于下面的C#泛型constratint的泛型约束?在Java中对类的双重泛型约束:extends ConcreteClass&I

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

我试图做这样的:

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

但是,编译器会抱怨的“等级2”的部分:类型参数不能其次是其他界限。

+0

`extands`?你的意思是“扩展”吗? - C#行也没有对T型进行任何限制,也许你犯了一个错误? – BrainSlugs83 2015-04-25 21:01:43

+0

这是一个错字,这是Java。 – axk 2016-01-06 14:32:18

回答

4

我可以看到解析Java代码的最简单的方法是使等级2的接口。

您不能约束一个类型参数来扩展多个类或类型参数。此外,你不能在这里使用超级。

5

此代码编译罚款这里:

interface Interface1 {} 

class Class2 {} 

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

为什么你需要的当你只承担接口1反正我类型呢? (你不会知道你的班上任何有关比它延伸接口1