2

我的代码有问题,但我不知道为什么。我有两个班级:

public class MyClass extends MySuperClass {
    potected int field1;
    public MyClass() {
        super();
    }
    @Override
    public int getField1() {
        return this.field1;
    }
    public void setField1(int f) {
        this.field1 = f;
    }
}


public class MySuperClass {
    potected int field1, field2;
    public MySuperObject() {
    }

    public int getField1() {
        return this.field1;
    }
    public void setField1(int f) {
        this.field1 = f;
    }

    public void setField2(int f) {
        this.field2 = f;
    }

    public int getField2() {
       return this.field2;
    }
}

当我创建不同的新 MyClass 对象(即在 ArrayList 中插入)时出现问题:

ArrayList<MyClass> list = new ArrayList<MyClass>();
while(condidion) {
    MyClass obj = new MyClass();
    obj.setField1(value1);
    obj.setField2(value2);
    list.add(obj);
}

如果 value1 和 value2 采用后续值

1 和 50

2 和 70

3 和 80

执行我的代码后,我的列表包含

1 和 80

2 和 80

3 和 80

看起来每次我创建新的 MyClass 对象时,只创建一个 MySuperClass 的实例(field2 假设最后一个输入值的值)。我该如何解决?

4

1 回答 1

0

这是您提供的代码。如果您提供正确的输入,它会完美运行。

import java.util.ArrayList;

class MyClass extends MySuperClass {

protected int field1;

public MyClass() {
    super();
}

@Override
public int getField1() {
    return this.field1;
}

public void setField1(int f) {
    this.field1 = f;
}

} 类 MySuperClass {

protected int field1, field2;

public MySuperClass() {
}

public int getField1() {
    return this.field1;
}

public void setField1(int f) {
    this.field1 = f;
}

public void setField2(int f) {
    this.field2 = f;
}

public int getField2() {
    return this.field2;
}

}

public class Tryouts {

public static void main(String[] args) {

    int i = 0;

    ArrayList<MyClass> list = new ArrayList<MyClass>();
    while(i < 3) {
        MyClass obj = new MyClass();
        obj.setField1(40 + i);
        obj.setField2(80+ i);
        list.add(obj);
        i++;
    }

    for (MyClass c : list) {
        System.out.println(c.getField1() + "::" + c.getField2());
    }
}

}

The output is 
40::80,   41::81,   42::82
于 2013-07-23T09:20:45.460 回答