猿问

绑定到类型扩展 T<E> 的 Java 泛型类

我有一个通用的测试类,它在它测试的集合(在我的例子中是堆栈)类型上是通用的。

将泛型类型的名称设为S(对于 Stack)。我有一个接口IStack<E>,我想要求S实现IStack<E>. 当我将类声明为 时 class Test<S extends IStack> { ... },会收到警告:

IStack 是原始类型,References ... 应该被参数化。

class Test<S<E> extends IStack<E>> 导致语法错误

标记 '<', 上的语法错误,预期

在 Java 中声明这种绑定的正确方法是什么?


慕无忌1623718
浏览 144回答 2
2回答

潇湘沐

我认为您需要两个通用参数,一个用于元素,另一个用于堆栈类型,即class&nbsp;Test<E,S&nbsp;extends&nbsp;IStack<E>>(或E extends SomeAncestorOfYourElements如果需要)

蝴蝶不菲

class Test<S extends IStack>使用原始类型的IStack,没有内部内容的编译时信息IStack。您可以做的事情很少,这完全取决于您的设计:class Test<S extends IStack<?>>&nbsp;允许任何元素类型&nbsp;IStackclass Test<E, S extends IStack<E>>绑定IStack到特定的E元素类型class Test<S extends IStack<S>>&nbsp;迷惑所有人
随时随地看视频慕课网APP

相关分类

Java
我要回答