我一直在浏览互联网,但无法找到解决方案。
这是我的代码:
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);)。它真的很必要吗?
这不仅是合规性错误。这是List ist声明的方式
答案 0 :(得分:1)
指定将存储在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 :(得分:1)
您需要指定您的arraylist将包含的对象类型。
List<Type> myArrayList = new ArrayList<>()
或者在旧版本的java上,您需要指定两次
List<Type> myArrayList = new ArrayList<Type>()
请注意,此类型必须是类类型,而不是基本类型。你不能使用int,char,double等(但你可以使用Integer,Character,Double)。此外,正如gundev添加到此答案中,最佳做法是在声明这些类型的变量时使用List接口类型而不是ArrayList类型
这就像你为数组和其他变量指定类型的方式一样,但语法略有不同。如果您有兴趣,可以查看泛型,甚至只查看ArrayList源代码