2

私のコードには何か問題がありますが、その理由はわかりません。私は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 に答える