3

我正在使自己了解 Java 泛型(甚至在 JDK 1.4... 1.3 的遗留代码上工作了很长时间),但我不太明白这一点:

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

WhereFooBar是两个通用类。

这怎么理解,因为我不太明白?

我已经阅读了很多关于 Java 泛型的内容,但这有点让人费解(至少对于我这个初学者来说)。

4

1 回答 1

4

好吧,Foo必须由 a 参数化T。它T本身必须扩展Bar<U>为某种类型U,例如Uextends Foo<T>。(在这种情况下,“扩展”可以表示“与类型相同”。)我在U这里使用了任意类型名称,但它在声明中未命名,因此?.

你说得对,这有点让人费解,但通常在这种事情出现的情况下,它最终会让事情变得更简单。如果你能举一个具体的例子,我们也许能解释得更有用一些。

于 2011-05-06T17:00:17.907 回答