ループ内で新しいオブジェクトを作成して既存の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を構築しようとしましたが、明らかにそれは何も変わりません。
Clientクラスのコンストラクタはどのように見えますか? – Satyajit
残りのコードを表示する - 少なくともループの最後まで – Bohemian
Clientクラスを表示する - ループは正常に見えます。 –