在 Java 类型参数中,仅意味着严格的子类型?或者 E 也足够了吗?

发布于 2024-09-07 13:36:41 字数 44 浏览 11 评论 0 原文

在 Java 类型参数中,是否仅意味着严格的子类型?或者 E 也足够了吗?

In Java type arguments, does mean strictly subtypes only? or would E also suffice?

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

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

发布评论

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

评论(3

唔猫 2024-09-14 13:36:41

这并不严格; E 就足够了。

It's not strict; E would suffice.

云归处 2024-09-14 13:36:41

是的,superextends 分别给出包含的下限和上限。

以下引用自Angelika Langer 的泛型常见问题解答

什么是有界通配符?

带有上限的通配符看起来像?扩展 Type 并代表作为 Type 子类型的所有类型系列,类型 Type包含类型称为上限

带有下限的通配符看起来像? super Type 代表所有类型的家族,这些类型是 Type 的超类型,类型 Type包含类型称为下界

Yes, super and extends gives inclusive lower and upper bounds respectively.

Here's a quote from Angelika Langer's Generics FAQ:

What is a bounded wildcard?

A wildcard with an upper bound looks like ? extends Type and stands for the family of all types that are subtypes of Type , type Type being included. Type is called the upper bound.

A wildcard with a lower bound looks like ? super Type and stands for the family of all types that are supertypes of Type , type Type being included. Type is called the lower bound.

全部不再 2024-09-14 13:36:41
List<? extends Animal> animalList=new List<Dog>();
List<? extends Animal> animalList=new List<Animal>();

这两行编译都没有任何错误。
任何将列表作为参数的函数都知道列表中的对象属于类型 E 或 E 的子类型。

List<? extends Animal> animalList=new List<Dog>();
List<? extends Animal> animalList=new List<Animal>();

Both the lines compile without any error.
Any function taking the list as a parameter understands that the objects in the list are of type E or a subtype of E.

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