对于通用数据类型new Stack<?>[N]
,new Stack[N]
是否等同于Stack<Item>
?
编辑:虽然我理解最好避免混合泛型类型和数组,并且存在更强大的解决方案,但我的查询仍然存在:被广泛认可的教科书,例如Kevin Wayne的算法,第4版和Robert Sedgewick(第158页)建议使用如下结构:
Stack<String>[] a = (Stack<String>[]) new Stack[N];
答案 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>[]
使用原始类型,不建议在新代码中使用。