我的代码有问题,但我不知道为什么。我有两节课:
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假设最后一个输入值的值)。 我该如何解决?
答案 0 :(得分: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;
}
} class 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