Java 泛型 - 我如何阅读此内容:Foo>>?

发布于 2024-11-05 16:54:42 字数 308 浏览 5 评论 0 原文

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

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

Foo 在哪里>Bar 是两个泛型类。

因为我不太明白,这该如何理解?

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

I am bringing myself up to date with Java generics (having worked for a loooong time on legacy code with JDK 1.4... 1.3 even) and I don't quite understand this:

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

Where Foo and Bar are two generic classes.

How is this to be understood because I don't quite get it?

I've read a lot about Java generics but this is a little mind bending (at least for me as a beginner).

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

浅浅 2024-11-12 16:54:42

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

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

Well, Foo has to be parameterized by a T. That T itself has to extend Bar<U> for some type U such that U extends Foo<T>. (Where "extend" can mean "is the same type as" in this case.) I've used U 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文