【发布时间】:2022-01-17 01:09:16
【问题描述】:
我不明白 Generic Array Creation 的错误。
首先我尝试了以下方法:
public PCB[] getAll() {
PCB[] res = new PCB[list.size()];
for (int i = 0; i < res.length; i++) {
res[i] = list.get(i);
}
list.clear();
return res;
}
然后我尝试这样做:
PCB[] res = new PCB[100];
我一定错过了一些看起来正确的事情。我试着查了一下,我真的做到了。什么都没有点击。
我的问题是:我能做些什么来解决这个问题?
错误是:
.\Queue.java:26: generic array creation
PCB[] res = new PCB[200];
^
Note: U:\Senior Year\CS451- file
uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
1 error
工具已完成,退出代码为 1
【问题讨论】:
-
你能发布异常/错误
-
我假设
PCB是一个泛型类型参数,因此,由于类型擦除,您在 Java 中所做的事情是不可能的。如果这一切都是真的,您应该点击我标记为重复的链接,因为它提供了一种解决方法。 -
已经尝试阅读该帖子。它对我没有帮助
-
可悲的事实是,Java 有意识地决定明确阻止这种语法工作。 Java 实现了类型擦除,这意味着类型参数
PCB在运行时实际上没有任何意义(或者从技术上讲,它确实如此,但它可能只是Object这对你没有任何好处)。有两种方法可以规避此限制。两者都在我引用的链接中进行了详细解释。让我知道您在该解决方案的哪个特定部分遇到问题。 -
PCB>[] res = new PCB>[100];是可能的
标签: java arrays generics class object