Java泛型 - 如何阅读:Foo <T extends Bar <? extends Foo <T>>>?

3

我正在学习Java泛型(之前一直在使用JDK 1.4...甚至是1.3的遗留代码),但我还不太理解以下内容:

public class Foo<T extends Bar<? extends Foo<T>>> { ...

这里的FooBar是两个通用类。

我不太理解这个问题的含义,您能否详细说明一下?

我已经阅读了很多关于Java泛型的内容,但对于我这样的初学者来说,这有点难以理解。


可能是创建循环泛型引用的重复问题。 - Brian Roach
1个回答

4

嗯,Foo必须由T参数化。该T本身必须扩展某种类型UBar<U>,使得U扩展Foo<T>。(在这种情况下,“扩展”可以意味着“与之相同的类型”)。我在这里使用U作为任意类型名称,但在声明中未命名,因此使用?

你说的没错,这有点令人费解,但通常在出现这种情况的情况下,它最终会使事情变得更简单。如果您可以给出一个具体的例子,我们可能能够更有用地解释一下。


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