有没有办法在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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top