Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我正在使自己了解 Java 泛型(甚至在 JDK 1.4... 1.3 的遗留代码上工作了很长时间),但我不太明白这一点:
public class Foo<T extends Bar<? extends Foo<T>>> { ...
WhereFoo和Bar是两个通用类。
Foo
Bar
这怎么理解,因为我不太明白?
我已经阅读了很多关于 Java 泛型的内容,但这有点让人费解(至少对于我这个初学者来说)。
好吧,Foo必须由 a 参数化T。它T本身必须扩展Bar<U>为某种类型U,例如Uextends Foo<T>。(在这种情况下,“扩展”可以表示“与类型相同”。)我在U这里使用了任意类型名称,但它在声明中未命名,因此?.
T
Bar<U>
U
Foo<T>
?
你说得对,这有点让人费解,但通常在这种事情出现的情况下,它最终会让事情变得更简单。如果你能举一个具体的例子,我们也许能解释得更有用一些。