Java 泛型 - 我如何阅读此内容:Foo>>?
我正在使自己了解最新的 Java 泛型(甚至在 JDK 1.4...1.3 的遗留代码上工作了很长一段时间),但我不太明白这一点:
public class Foo<T extends Bar<? extends Foo<T>>> { ...
Foo
和 在哪里>Bar
是两个泛型类。
因为我不太明白,这该如何理解?
我读过很多关于 Java 泛型的内容,但这有点令人费解(至少对于我这个初学者来说)。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
好吧,
Foo
必须由T
参数化。该T
本身必须为某种类型U
扩展Bar
,以便U
扩展Foo< ;T>
。 (在这种情况下,“extend”可以表示“与以下类型相同”。)我在这里使用U
作为任意类型名称,但它在声明中未命名,因此?
。你说得对,这有点令人费解,但通常在出现此类事情的情况下,它最终会让事情变得更简单。如果你能给出一个具体的例子,我们也许可以更有用地解释一下。
Well,
Foo
has to be parameterized by aT
. ThatT
itself has to extendBar<U>
for some typeU
such thatU
extendsFoo<T>
. (Where "extend" can mean "is the same type as" in this case.) I've usedU
here as an arbitrary type name, but it's unnamed in the declaration, hence?
.You're right that it's a bit mind-bending, but typically in the circumstances where this sort of thing crops up, it ends up making things simpler. If you can give a concrete example, we may be able to explain a bit more usefully.