编辑:如果您有任何问题我可以发布更多内容,这只是代码的一小部分。
尝试使用Queues在Java中编写进程调度算法,我遇到了这个警告。任何人都可以帮我解决这个警告吗?
prog2.java:115: warning: [unchecked] unchecked call to add(E) as a member of the raw type java.util.Collection
notSubmitted.add(p[r]);
这是我遇到问题的代码。我想我需要使用泛型,但我之前没有使用它们。
static Queue notSubmitted = new LinkedList();
...
for(int j = 0; j < numProcesses; ++j)
{
pid = i.nextInt();
priority = i.nextInt();
submissionTime = i.nextInt();
totalCpuTime = i.nextInt();
computeTime = i.nextInt();
ioTime = i.nextInt();
p[j] = new Process(pid, priority, submissionTime, totalCpuTime, computeTime, ioTime);
}
for(int r = 0; r < numProcesses; ++r)
{
//populate the not submitted queue first
notSubmitted.add(p[r]);
}
答案 0 :(得分:3)
要消除警告,您可以在队列声明中使用泛型,如下所示(Java 5&amp; 6):
static Queue<Process> notSubmitted = new LinkedList<Process>();
或者如果您使用Java 7 +:
static Queue<Process> notSubmitted = new LinkedList<>();
告诉编译器您只计划将Process
个对象添加到该列表中。
答案 1 :(得分:2)
如果您的p[]
类型为Process[]
,那么您只需对队列使用以下声明:
static Queue<Process> notSubmitted = new LinkedList<Process>();
表示队列包含Process
类型的对象(它还可以包含Process
类型的子类。)
答案 2 :(得分:1)
将通用添加到您的队列:
static Queue<Process> notSubmitted = new LinkedList<Process>();