Java泛型-如何阅读:Foo<;T扩展条<;?扩展Foo<;T>&燃气轮机>;?

Java泛型-如何阅读:Foo<;T扩展条<;?扩展Foo<;T>&燃气轮机>;?,java,generics,crtp,Java,Generics,Crtp,我正在更新Java泛型(在JDK 1.4…甚至1.3的遗留代码上工作了很长时间),但我不太理解这一点: public class Foo<T extends Bar<? extends Foo<T>>> { ... 公共类Foo那么,Foo必须由T参数化。对于某些类型的U,T本身必须扩展Bar,从而U扩展Foo。(其中“extend”可以表示“与”在本例中的类型相同。)我在这里使用了U作为任意类型名,但在声明中未命名,因此? 你是对的,这有点令人费解,但通常

我正在更新Java泛型(在JDK 1.4…甚至1.3的遗留代码上工作了很长时间),但我不太理解这一点:

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

公共类Foo那么,
Foo
必须由
T
参数化。对于某些类型的
U
T
本身必须扩展
Bar
,从而
U
扩展
Foo
。(其中“extend”可以表示“与”在本例中的类型相同。)我在这里使用了
U
作为任意类型名,但在声明中未命名,因此

你是对的,这有点令人费解,但通常在这种情况下,它会使事情变得更简单。如果你能给出一个具体的例子,我们也许能更有效地解释一下。

可能的重复