有没有办法在 Java 中定义一个类似于以下 C# 泛型约束的泛型约束?
class Class1<I,T> where I : Interface1, Class2 : I
我正在尝试这样做:
class Class1<I extends Interface1, T extends I & Class2>
但是编译器抱怨“Class2”部分:类型参数不能跟随其他界限。
有没有办法在 Java 中定义一个类似于以下 C# 泛型约束的泛型约束?
class Class1<I,T> where I : Interface1, Class2 : I
我正在尝试这样做:
class Class1<I extends Interface1, T extends I & Class2>
但是编译器抱怨“Class2”部分:类型参数不能跟随其他界限。
这段代码在这里编译得很好:
interface Interface1 {}
class Class2 {}
class Class1<I extends Interface1, T extends Class2 & Interface1> {}
当你只假设Interface1时,为什么你需要在那里输入I?(你在课堂上不会知道更多关于I的信息,而不是它扩展了Interface1)
我能看到的解析 Java 代码的最简单方法是使 Class2 成为接口。
您不能将类型参数限制为扩展多个类或类型参数。此外,您不能在此处使用 super 。