Компиляция с -Xlint получает непроверенный вызов add (E) - PullRequest
0 голосов
/ 19 марта 2012

РЕДАКТИРОВАТЬ: это просто небольшой фрагмент кода, если у вас есть какие-либо вопросы, я могу отправить больше.

Попытка написать алгоритм планирования процессов в 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]);

Вот код, с которым у меня проблемы. Я думаю, что мне нужно использовать Generics, но я не использовал их раньше.

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 ]

3 голосов
/ 19 марта 2012

Чтобы избавиться от предупреждения, вы можете использовать обобщенные значения в объявлении очереди следующим образом (Java 5 & 6):

static Queue<Process> notSubmitted = new LinkedList<Process>();

или если вы используете Java 7 +:

static Queue<Process> notSubmitted = new LinkedList<>();

Это говорит компилятору, что вы только планируете добавить Process объекты в этот список.

2 голосов
/ 19 марта 2012

Если ваш p[] имеет тип Process[], то вы просто используете следующую декларацию для своей очереди:

static Queue<Process> notSubmitted = new LinkedList<Process>();

, которая указывает, что очередь содержит объект типа Process (этотакже может содержать подклассы типа Process).

1 голос
/ 19 марта 2012

Добавьте универсальный в вашу очередь:

static Queue<Process> notSubmitted = new LinkedList<Process>();

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...