如何 .add 到 ArrayList<Object>?



我是Java新手,正在尝试学习如何将项添加到ArrayList<Object>中。我使用.add的方式似乎对此不起作用。有其他选择吗?

public static void makMat(ArrayList<Maker> makers, ArrayList<Material> materials, int i)
{
assert i >= 50;
for (int makId = 5; makId <= i; makId++)
{

for (Maker maker : makers)
{
//do stuff
}
makers.add(makId);  // throws error             
makers.get(makers.size() - 1).addMaterial(materials.get(i+2)); // works fine
}
}

Eclipse错误:The method add(int, makeMat.Maker) in the type ArrayList<makeMat.Maker> is not applicable for the arguments (int)

我原以为这篇文章中提到的东西会是修复方法,但当我修改add行并在它之前添加两行时,我仍然会遇到同样的错误:

Maker mk = new Maker(makId);
mk.setMakId(makId);
makers.add(mk);

如果我理解正确的话,问题是当我在这里使用.add时,我需要添加一个对象,而不是int。因此,解决方案应该是将int添加到对象中,然后将其添加到我的ArrayList<Object>中。我以为这就是我在修改中所做的,但它仍然抛出了相同的错误。

您要添加到makersArrayList的是您将makers参数声明为(如果它实际上存在(的内容,这将是Maker的一个新实例。

如果Maker类包含一个构造函数,该构造函数可以填充所需的类实例成员变量,则最简单,例如,如果Maker类包含:

public class Maker {
// class Member variables
private int makeID;
private String makeName;
private String makeModel;
// Constructor 1:
public Maker() { }
// Contructor 2:
public Maker(int id, String name, String model) {
this.makeID = id;
this.makeName = name;
this.makeModel = model;
}
// Getters & Setters
public int getMakeID() {
return makeID;
}
public void setMakeID(int id) {
this.makeID = id;
}
public String getMakeName() {
return makeName;
}
public void setMakeName(String name) {
this.makeName = name;
}
public String getMakeModel() {
return makeModel;
}
public void setMakeModel(String model) {
this.makeModel = model;
}
@Override
public String toString() {
return new StringBuilder("").append(String.valueOf(this.makeID)).append(", ")
.append(this.makeName).append(", ").append(this.makeModel).toString();
}
} 

在你发布的方法代码示例中,你会有类似的东西:

makers.add(new Maker(makId, makName, makModel));

这现在将Maker对象的一个新实例添加到MakerArrayList集合中。

相关内容

最新更新