使用-Xlint进行编译获取未选中的调用以添加(E)

时间:2012-03-19 12:40:12

标签: java generics queue

编辑:如果您有任何问题我可以发布更多内容,这只是代码的一小部分。

尝试使用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]);
            }

3 个答案:

答案 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>();

相关问题