Я просматривал Интернет, и мне не удалось найти решение.

Вот мой код:

import java.util.ArrayList;

public class Memoire{

int taille;                             //Size of the memory in bits
boolean flag = true;                    //At "0" if the memory is fully utelized. Else at "1"
ArrayList pid = new ArrayList();        //Use to store the pid
ArrayList size = new ArrayList();       //Use to store the amount of memory allocated for each pid

public void memoire()
{

}

public void memoire(int qTaille)
{
    taille = qTaille;
}

public boolean allouer(int qSize, int qPid,boolean force)//The Process ID (pid) bind the allocated memory to his process
{
    int left = verifMemoire(qSize);                 //Get the remaining memory

    if(left < qSize)                                //If the remaning memory is larger than the request
    {
        pid.add(qPid);                              //Store the pid
        size.add(qSize);                            //Store the size
    }
    else
    {
        if(force)                                   //If the user want to force the allocation 
        {
            pid.add(qPid);                          //Store the pid
            size.add(left);                         //Sotre the remaining memory size
        }
        else
        {
            return false;                           //If the user don't want to force, return an error
        }
    }
    return true;                                    //Return the success of the allocation
}

У меня все еще есть Eclipse, который говорит мне, что мне нужно указать и возразить против моего .add ArrayList (size.add (qSize);). Это действительно необходимо?

Это не только ошибка соответствия. Так объявлен список

-3
Amperclock 24 Апр 2017 в 11:59

2 ответа

Лучший ответ

Укажите тип элементов, которые будут храниться в ArrayList. В этом случае я думаю, что вы храните целочисленные значения в списке size, поэтому просто определите тип Integer внутри угловых скобок следующим образом:

ArrayList<Integer> size = new ArrayList();

Если вы используете версию до Java 7:

ArrayList<Integer> size = new ArrayList<Integer>();

Кстати, я бы предложил вам использовать тип интерфейса List в левой части назначения и указывать реализацию List (например, ArrayList) только в правой части. Таким образом, вы отделите свой код от конкретной реализации интерфейса:

List<Integer> size = new ArrayList();
1
Vaidas 24 Апр 2017 в 09:22

Вам необходимо указать, какой тип объекта будет содержать ваш массив.

List<Type> myArrayList = new ArrayList<>()

Или на старых версиях Java вам нужно будет указать дважды

List<Type> myArrayList = new ArrayList<Type>()

Обратите внимание, что этот тип должен быть типом класса, а не типом примитива. Вы не можете использовать int, char, double и т. Д. (Но вы можете использовать Integer, Character, Double). Кроме того, поскольку gundev добавлено к этому ответу, при объявлении рекомендуется использовать тип интерфейса List, а не тип ArrayList. эти типы переменных

Это так же, как вы указываете типы для массивов и других переменных, но с немного другим синтаксисом. Если вам интересно, вы можете посмотреть дженерики или просто взглянуть на исходный код ArrayList

1
Community 23 Май 2017 в 10:31
43583782