12

有没有办法在 Java 中定义一个类似于以下 C# 泛型约束的泛型约束?

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

我正在尝试这样做:

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

但是编译器抱怨“Class2”部分:类型参数不能跟随其他界限。

4

2 回答 2

5

这段代码在这里编译得很好:

interface Interface1 {}

class Class2 {}

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

当你只假设Interface1时,为什么你需要在那里输入I?(你在课堂上不会知道更多关于I的信息,而不是它扩展了Interface1

于 2008-09-25T10:02:09.583 回答
5

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

您不能将类型参数限制为扩展多个类或类型参数。此外,您不能在此处使用 super 。

于 2008-09-25T12:32:18.067 回答