我正在尝试制作一个包含不同对象的列表。
List<Object> list = new ArrayList<Object>();
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"));
结果是带有字符串“ y”的两个defObjects
请帮助我弄清楚为什么未正确添加对象,并且属性与添加到列表中的最后一个defObj相同。
问题是,defObj
是static
如此的所有实例都共享同一个变量。static
从班上所有地方删除单词,一切都会按预期运行。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句