Java中对类的双重通用约束:扩展ConcreteClass&一世
-
02-07-2019 - |
题
有没有办法在Java中定义一个类似于以下C#泛型constratint的泛型约束?
class Class1<I,T> where I : Interface1, Class2 : I
我试图这样做:
class Class1<I extends Interface1, T extends I & Class2>
但编译器抱怨“Class2” part:类型参数不能跟随其他边界。
解决方案
我能看到解决Java代码的最简单方法是使Class2成为一个接口。
您不能约束类型参数来扩展多个类或类型参数。此外,你不能在这里使用超级。
其他提示
这段代码编写得很好:
interface Interface1 {}
class Class2 {}
class Class1<I extends Interface1, T extends Class2 & Interface1> {}
当你只假设 Interface1 时,为什么还需要 I 类型? (你不会在课堂上了解我而不是扩展 Interface1 )
不隶属于 StackOverflow