参见英文答案 >
Why does my ArrayList contain N copies of the last item added to the list? 4个
我正在尝试制作一个包含不同对象的列表.
List list = new ArrayList();
defObject defObj;
optObject optObj;
和defObject只有一个String属性.
public static class defObject
{
public static String defObj;
public defObject(String x)
{
setDefObj(x);
}
public static String getDefObj() {
return defObj;
}
public static void setDefObj(String defObj) {
defObject.defObj = defObj;
}
}
如果我在列表中添加多个defObjects并在完成添加元素后遍历列表,则它们都包含相同的字符串,这是添加到列表中的最后一个defObject.
我正在做这样的事情来将对象添加到列表中:
if (whatever)
list.add(defObj = new defObject("x"));
else if(whatever)
list.add(defObj = new defObject("y"));
结果是两个defObjects,字符串为“y”
请帮我弄清楚为什么没有正确添加对象,并且属性与添加到列表中的最后一个defObj完全相同.