Java泛型:一个泛型类可以继承另一个泛型类吗?

3

你好,我有一个问题,我有三个抽象类都是泛型的,我希望实现以下内容:

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

这段代码无法正常工作,并出现以下错误(在第二个extends上):

语法错误,在“extends”上,期望“,”。

然而,如果使用以下代码,则可以正常工作:

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

所以,使用K和有什么区别?非常感谢。

4
使用 K 尝试引入一个新的类型参数。您无法在类型参数使用中这样做。 - Sotirios Delimanolis
1个回答

12

类型参数 vs 类型参数

您可以阅读Angelica Langer的这篇优秀的常见问题解答来澄清这个区别。

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

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

因此,如果已经定义了K,则可以使用它。您还可以在定义时添加约束条件。

public abstract class AbstractOne<K extends AbstractThree<K>, T extends AbstractTwo<K>>

祝你好运。


很高兴知道它有所帮助。 - Tanmay Patil
你能详细说明一下 K extends AbstractThree<K> 吗?这两个 K 是同一个类吗?如果是,那么它如何扩展自身呢? - LoveMeow
这是一个递归约束。您可以用类替换K,该类定义如下:class MyFoo extends AbstractThree<MyFoo> - Tanmay Patil

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接