Java - 新的Stack <! - ? - > [N]相当于通用数据类型Stack <item>的新Stack [N]?</item>

时间:2015-03-23 11:35:28

标签: java arrays generics unbounded-wildcard

对于通用数据类型new Stack<?>[N]new Stack[N]是否等同于Stack<Item>

编辑:虽然我理解最好避免混合泛型类型和数组,并且存在更强大的解决方案,但我的查询仍然存在:被广泛认可的教科书,例如Kevin Wayne的算法,第4版和Robert Sedgewick(第158页)建议使用如下结构:

Stack<String>[] a = (Stack<String>[]) new Stack[N];

2 个答案:

答案 0 :(得分:2)

[将我的评论转化为真实答案]

1)应避免混合数组和泛型类型。

2)相反,可以使用Java Collection类型,例如ArrayList,当需要处理多个&#34; generic&#34;对象,比如

ArrayList<Stack<String>> theStacks = new ArrayList<>();

答案 1 :(得分:2)

是的,它们是等效的,除了返回类型(一个是Stack[],另一个是Stack<?>[])。

请注意,Stack[]可以在没有显式转换的情况下分配给Stack<String>[](您只会获得未经检查的转换警告),而将Stack<?>[]分配给{{ 1}}没有演员。

Stack<String>[]使用原始类型,不建议在新代码中使用。