Java:如何对待通用异构容器?

发布于 2024-12-12 07:59:29 字数 213 浏览 0 评论 0原文

在处理异构容器(即带有字符串、整数等的数据库游标)时,什么(以及为什么)是更好的方法:

Vector<?> 

或者

Vector<Object>

您可以用 Vector 替换任何其他 Collection,这只是示例。

While dealing with heterogeneous containers (i.e. database cursor with strings, ints etc.), what (and why) is better approach:

Vector<?> 

or

Vector<Object>

You can substitute Vector for any other Collection, that's just example.

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

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

发布评论

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

评论(4

薄凉少年不暖心 2024-12-19 07:59:29

我不太确定你在比较什么。尝试创建类似的向量

    java.util.Vector<?> v = new java.util.Vector<?>();

会出现错误,无法实例化类型 Vector

如果在参数列表中使用 (不使用 super关键字),这意味着您无法将任何内容插入集合中。如果您使用 那么您可以插入和删除内容。

I'm not exactly sure what you're comparing. Trying to create a vector like

    java.util.Vector<?> v = new java.util.Vector<?>();

gets an error, Cannot instantiate the type Vector<?>

If you use <?> in a parameter list (without using the super keyword) that means you can't insert anything into the collection. If you use <Object> then you can insert and remove things.

吃不饱 2024-12-19 07:59:29

使用Vector。当您编写的代码不知道集合的泛型类型是什么时,应使用 ? 通配符。您无法创建一个new Vector,所以为什么要保留它。您知道您想要一个可以容纳任何 Object 的集合,因此这样声明它。

use Vector<Object>. The ? wildcard should be used when you are writing code that does not know what is the generic type of the collection. You cannot create a new Vector<?> so why hold it as such. You know you want a collection that will hold any Object so declare it as such.

凝望流年 2024-12-19 07:59:29

Vector是异构容器。

Vector 是未知类型的同质容器。

Vector<Object> is a heterogeneous container.

Vector<?> is a homogenous container of unknown type.

白首有我共你 2024-12-19 07:59:29

Collection 是所有类型 Collection 的超类型,包括 Collection

使用 Collection 允许您获取集合的内容,该内容始终至少是一个对象。

但正如 Nathan 所说,使用 Collection 将不允许您添加或删除元素。因为要添加或删除的任何参数传递都必须是此未知类型的子类型 ()。因为我们不知道那是什么类型,所以我们不能传递任何东西。唯一的例外是 null,它是每个类型的成员。

因此,如果您只需要查阅 Collection 的内容,则可以使用通配符类型,但如果您想添加/删除某些元素,则必须使用 Collection

Collection<?> is the super type of all kind of Collection including Collection<?>

Using Collection<?> allows you to get the content of the collection which will always be at least an Object.

But as Nathan said using Collection<?> will not allows you to add or remove elements. Because any parameter pass to add or remove would have to be a subtype of this unknown type (<?>). Since we don’t know what type that is, we cannot pass anything in. The sole exception is null, which is a member of every type.

So if you only need to consult the content of the Collection you can use wilcard type but if you want to add/remove some elements you have to use Collection<Object>.

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