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。