Java:如何处理通用异构容器?

Xor*_*rty 3 java generics

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

Vector<?> 
Run Code Online (Sandbox Code Playgroud)

要么

Vector<Object>
Run Code Online (Sandbox Code Playgroud)

您可以将Vector替换为任何其他Collection,这只是示例.

Nat*_*hes 6

我不确定你在比较什么.试图创建一个矢量

    java.util.Vector<?> v = new java.util.Vector<?>();
Run Code Online (Sandbox Code Playgroud)

得到一个错误, Cannot instantiate the type Vector<?>

如果<?>在参数列表中使用(不使用super关键字),则意味着您无法在集合中插入任何内容.如果你使用<Object>那么你可以插入和删除东西.

  • 更常见的是对于任何类型的`X`,你只能从`Vector <?中检索`X`.扩展X>`并且只将`X`插入`Vector <?超级X>`.但你可以**插入和检索`X`到/从'Vector <X>`.在这个特定的例子中你可以看到`?`只是`?的简写符号?扩展Object`,所以遵循这个答案. (2认同)

Joh*_*n B 5

Vector<Object>.在?编写不知道集合的泛型类型的代码时,应使用通配符.你不能创建一个new Vector<?>为什么这样保持它.你知道你想要一个可以保存的集合,Object因此声明它.