为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕无忌1623718 2021-12-30 20:49:58
我有一个通用的测试类,它在它测试的集合(在我的例子中是堆栈)类型上是通用的。将泛型类型的名称设为S(对于 Stack)。我有一个接口IStack<E>,我想要求S实现IStack<E>. 当我将类声明为 时 class Test<S extends IStack> { ... },会收到警告:IStack 是原始类型,References ... 应该被参数化。class Test<S<E> extends IStack<E>> 导致语法错误标记 '<', 上的语法错误,预期在 Java 中声明这种绑定的正确方法是什么?
查看完整描述

2 回答

?
潇湘沐

TA贡献1816条经验 获得超6个赞

我认为您需要两个通用参数,一个用于元素,另一个用于堆栈类型,即

class Test<E,S extends IStack<E>>

(或E extends SomeAncestorOfYourElements如果需要)


查看完整回答
反对 回复 2021-12-30
?
蝴蝶不菲

TA贡献1810条经验 获得超4个赞

class Test<S extends IStack>使用原始类型IStack,没有内部内容的编译时信息IStack

您可以做的事情很少,这完全取决于您的设计:

  • class Test<S extends IStack<?>> 允许任何元素类型 IStack

  • class Test<E, S extends IStack<E>>绑定IStack到特定的E元素类型

  • class Test<S extends IStack<S>> 迷惑所有人


查看完整回答
反对 回复 2021-12-30
  • 2 回答
  • 0 关注
  • 143 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信