2011年2月25日 星期五

ObjectOutputStream送出的物件指向舊的物件?

假設我在Server端有以下的Code

HashMap<String,String> map=new HashMap<String,String> ();
ObjectOutputStream oos=new ObjectOutputStream(clientsocket.getOutputStream);
while(true){
       map.put(Long.toString(System.currentTimeMillis()),Long.toString(System.currentTimeMillis()));
       oos.writeObject(map);
}

另外一端收到的會發現後面收到的物件都跟第一次收到的物件一樣,Why?因為在送出的時候都是指向同一個位址,因此必須要加上oos.reset();結果才會正確。