我让自己了解Java泛型的最新情况(在JDK1.4的遗留代码上工作了很长时间……1.3甚至),我对此不太理解:
public class Foo<T extends Bar<? extends Foo<T>>> { ...
其中Foo
和Bar
是两个泛型类。
因为我不太明白,这怎么理解呢?
我读过很多关于Java泛型的文章,但这有点让人费解(至少对我这个初学者来说是这样)。
发布于 2011-05-06 17:00:18
好的,Foo
必须由T
参数化。T
本身必须为某种类型的U
扩展Bar<U>
,这样U
才能扩展Foo<T>
。(其中“扩展”的意思是“与本例中的”类型相同。)我在这里使用了U
作为任意的类型名称,但它在声明中没有命名,因此是?
。
你说得对,这有点让人费解,但通常在这类事情突然出现的情况下,它最终会让事情变得更简单。如果你能给出一个具体的例子,我们也许能解释得更有用一点。
https://stackoverflow.com/questions/5914637
复制相似问题