Java中对类的双重泛型约束:扩展ConcreteClass和I

时间:2020-03-06 14:42:43  来源:igfitidea点击:

有没有一种方法可以在Java中定义与以下Cgeneric constratint类似的泛型约束?

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

我正在尝试这样做:

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

但是编译器抱怨" Class2"部分:Type参数不能跟其他界限。

解决方案

这段代码可以在这里很好地编译:

interface Interface1 {}

class Class2 {}

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

无论如何,仅假设Interface1时,为什么需要在那里输入I? (除了扩展Interface1,我们在班上对我一无所知)

我看到的解决Java代码的最简单方法是使Class2成为接口。

我们不能约束类型参数以扩展多个类或者类型参数。此外,我们不能在此处使用super。