我正在尝试将对象添加到ArrayList,但似乎无论何时调用add方法,列表都只填充我添加的最后一个对象。
以下是我添加的内容:
MyObject testObject1 = new MyObject();
testObject1.setType(0);
MyList.myList.add(testObject1);
MyObject testObject2 = new MyObject();
testObject2.setType(1);
MyList.myList.add(testObject2);
MyList是一个具有单个ArrayList的类,其定义如下:
public static ArrayList<MyObject> myList = new ArrayList<MyObject>();
MyObject是一个包含一些成员变量和方法的类:
static int type;
public void setType(int inType) {
type = inType;
}
然后我在MyList.myList中列出对象,如下所示:
for (int i=0; i<MyList.myList.size(); i++) {
Log.d(TAG, "Type is " + MyList.myList.get(i).getType());
}
它列出了2个对象,但类型始终为1。
怎么了?
感谢。
答案 0 :(得分:3)
因为setType
是static
,它与对象的状态无关
MyObject.setType = 1;
从static
类setType
中移除MyObject
关键字,并为每个实例设置其值
查看强>
答案 1 :(得分:0)
static int type;
public void setType(int inType) {
type = inType;
}
您不应该从实例方法设置静态变量。
int type;
public void setType(int inType) {
type = inType;
}
如上所述更改将解决您的问题。