Java Generic:Generic可以扩展另一个Generic类吗?

时间:2017-01-10 18:38:17

标签: java generics inheritance

这里,这是我的问题,我有三个摘要类,都是通用的,我想要这样的东西:

public abstract class AbstracOne< T extends AbstractTwo< K extends AbstractThree<K> >>>

这不起作用,我得到以下错误(在第二次扩展):

令牌上的语法错误“extends”,预期。

但是,如果我使用以下代码,它正在运行:

public abstract class AbstracOne< T extends AbstractTwo< ? extends AbstractThree<?> >>>

那么,使用K和?之间有什么区别?

非常感谢

1 个答案:

答案 0 :(得分:7)

类型参数vs类型参数

你可以阅读这篇优秀的FAQ by Angelica Langer来清除这种区别。

泛型类具有类型参数,当您使用泛型类时,这些参数将替换为类型参数。

类型参数可以有约束。类型参数可以是完全限定类型或以前定义的类型参数。

因此,如果已定义public abstract class AbstractOne<K extends AbstractThree<K>, T extends AbstractTwo<K>> ,则可以使用{{1}}。您还可以在定义约束时添加约束。

{{1}}
祝你好运。