我正在学习Java泛型(之前一直在使用JDK 1.4...甚至是1.3的遗留代码),但我还不太理解以下内容:
public class Foo<T extends Bar<? extends Foo<T>>> { ...
这里的Foo
和Bar
是两个通用类。
我不太理解这个问题的含义,您能否详细说明一下?
我已经阅读了很多关于Java泛型的内容,但对于我这样的初学者来说,这有点难以理解。
我正在学习Java泛型(之前一直在使用JDK 1.4...甚至是1.3的遗留代码),但我还不太理解以下内容:
public class Foo<T extends Bar<? extends Foo<T>>> { ...
这里的Foo
和Bar
是两个通用类。
我不太理解这个问题的含义,您能否详细说明一下?
我已经阅读了很多关于Java泛型的内容,但对于我这样的初学者来说,这有点难以理解。
嗯,Foo
必须由T
参数化。该T
本身必须扩展某种类型U
的Bar<U>
,使得U
扩展Foo<T>
。(在这种情况下,“扩展”可以意味着“与之相同的类型”)。我在这里使用U
作为任意类型名称,但在声明中未命名,因此使用?
。
你说的没错,这有点令人费解,但通常在出现这种情况的情况下,它最终会使事情变得更简单。如果您可以给出一个具体的例子,我们可能能够更有用地解释一下。