对于一般数据类型new Stack<?>[N]
,new Stack[N]
是否等于Stack<Item>
?
编辑:虽然我知道应该最好避免混合使用通用类型和数组,并且存在更可靠的解决方案,但我的查询仍然存在:公认的教科书,例如Kevin Wayne和Robert Sedgewick(第158页)编写的Algorithms,4th Edition,建议使用构造如下所示:
Stack<String>[] a = (Stack<String>[]) new Stack[N];
最佳答案
是的,它们是等效的,除了返回类型(一个是Stack[]
,另一个是Stack<?>[]
)。
请注意,无需显式强制转换就可以将Stack[]
分配给Stack<String>[]
(您将获得未经检查的转换警告),而无需强制转换将Stack<?>[]
分配给Stack<String>[]
是错误的。new Stack[N]
使用的原始类型在新代码中不建议使用。