Java中的对象列表

Mit*_*civ 4 java

我正在尝试制作一个包含不同对象的列表.

List<Object> list = new ArrayList<Object>();
    defObject defObj;
    optObject optObj;
Run Code Online (Sandbox Code Playgroud)

和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;
    }           
}
Run Code Online (Sandbox Code Playgroud)

如果我在列表中添加多个defObjects并在完成添加元素后遍历列表,则它们都包含相同的字符串,这是添加到列表中的最后一个defObject.

我正在做这样的事情来将对象添加到列表中:

   if (whatever)
       list.add(defObj = new defObject("x"));
    else if(whatever)
       list.add(defObj = new defObject("y"));
Run Code Online (Sandbox Code Playgroud)

结果是两个defObjects,字符串为"y"

请帮我弄清楚为什么没有正确添加对象,并且属性与添加到列表中的最后一个defObj完全相同.

Asa*_*aph 12

问题defObjstatic这样的所有实例都共享同一个变量.static从班上的任何地方删除这个词,一切都可能按照你的预期运作.