我有一个通用测试类,它对它测试的集合类型(在我的例子中是堆栈)是通用的。
设泛型的名称为S
(对于堆栈)。我有一个接口(interface) IStack<E>
我想要求 S
实现IStack<E>
.
当我宣布我的类(class)为
class Test<S extends IStack> { ... }
,
我收到警告:
IStack is a raw type, References ... should be parameterized.
class Test<S<E> extends IStack<E>>
导致语法错误
Syntax error on token '<', , expected
在 Java 中声明这种绑定(bind)的正确方法是什么?
最佳答案
我认为你需要两个通用参数,一个用于元素,另一个用于堆栈类型,即
class Test<E,S extends IStack<E>>
(或者 E extends SomeAncestorOfYourElements
如果需要的话)
关于绑定(bind)到类型扩展 T<E> 的 Java 泛型类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53159824/