2011-07-12 6 views
1

ループ内で新しいオブジェクトを作成して既存のVectorに追加しようとしていますが、各繰り返しで前の要素が変更され、最後のものが複製されます。同じオブジェクトを作成していた場合や、同じ参照を与えていた場合などです。しかし、私は各繰り返しで新しいObjectを作成します(まあ、私は推測します)。複数の追加の後にVector内で複製された要素を取得

static Vector myclients = new Vector();//note : this is an attribute of 
    //the all class, not just of that method, and I call those methods 
    // from the main of the same class 

while ((strLine = br.readLine()) != null) { 

     if (strLine.length() != 0 && 
      ! strLine.trim().substring(0,1).trim().equals("#")){ 
     // splitting my string 
     String[] result = strLine.trim().split("\\s+"); 
     int codigo = new Integer (Integer.parseInt(result[0].trim())) ; 
     String nome = new String (result[1].trim()); 

     try{ 
      if (result[2].trim().equals("cliente")){ 
      Cliente newcliente = new Cliente(codigo, nome);     
      Interface.err("Before addElement : "+myclientes.toString()); 
      myclientes.addElement(newcliente); 
      Interface.err("after : "+myclientes.toString()); 

      }else if(){ 
      // quite the same     
      } 

     }catch(Exception e){ 
      Interface.err("pb ... : "+e); 
     } 

     } // if 
    } // while 

私のクライアントクラスは、静的な要素をたくさん持っている:

public class Client { 
    public static Integer code; 
    public static String name; 
    Client(){ 
    code = null; 
    name = "undefined"; 
    } 

    Client(Integer code, String name){ 
    this.code = code; 
    this.name = name; 
    } 

}

をそして私が取得することである:

Before addElement : [] 
after : [Vincent 0] 
Before addElement : [emilie 999] 
after : [emilie 999, emilie 999] 
Before addElement : [vince 5, vince 5] 
after : [bob 5, bob 5, bob 5] 

同じ質問のようなものがここにあります elements of arraylist duplicated しかし、それは私を助けなかった...

ありがとうございました!

ps:コードと名前のために新しいIntegerとStringを構築しようとしましたが、明らかにそれは何も変わりません。

+1

Clientクラスのコンストラクタはどのように見えますか? – Satyajit

+0

残りのコードを表示する - 少なくともループの最後まで – Bohemian

+0

Clientクラスを表示する - ループは正常に見えます。 –

答えて

3

新しいClientオブジェクトは、Clientのフィールドが静的になっていないように見えるようになるたびに作成されます。

+0

+1コードの不足を考えれば、私が思うに最高の推測 – Bohemian

+0

そして、それらはあります! wooops、私はすでに気づいていましたが、私が思ったより多くの問題を作り出しています...(もっとコードを投稿しています) – vincent

+0

私のプロジェクトはひどく設計されていますね、私はmyclients Vectorをメインクラス)(同じクラスの他のメソッドで)上記のコードを呼び出す( - >そして最後に静的なpbsを得る)。 – vincent

関連する問題