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

标签 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];

最佳答案

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

请注意 Stack[]可以分配给Stack<String>[]没有显式转换(您只会收到未经检查的转换警告),而分配 Stack<?>[] 是错误的至 Stack<String>[]没有 Actor 。

new Stack[N]使用新代码中不推荐的原始类型。

关于Java - 对于通用数据类型 Stack<Item>,new Stack<?>[N] 是否等同于 new Stack[N]?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29209224/

相关文章:

javascript - 使用 Node.js 连接和聚合 json 对象数据

c# - 创建子数组而不进行复制和/或分配

java - Java 中的通配符不适用于 Spark cogroup 函数

Java 接口(interface)反射

java - 无法从 bouncycaSTLe 和 openssl dgst 获取匹配的 SHA1 摘要

java - HashMap 条目不会进入列

java - 何时在递归中使用 ArrayList 而不是数组

c# - 如何将两个泛型类型传递给扩展方法

java - java中super不能作为构造函数第一行时的解决方法

java - 如何在 JGit 中运行 "git rebase -i --root"?