对于一般数据类型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]使用的原始类型在新代码中不建议使用。

10-08 08:39
查看更多