public static void main(String[] args) throws Exception {
Socket socket = new Socket("127.0.0.1", 2345);
ObjectOutputStream oos = new ObjectOutputStream(socket.getOutputStream());
Map<Integer, Integer> testMap = new HashMap<Integer, Integer>();
testMap.put(1,1);
oos.writeObject(testMap);
oos.flush();
testMap.put(2,2);
oos.writeObject(testMap);
oos.flush();
oos.close();
}
public static void main(String[] args) throws Exception {
ServerSocket ss = new ServerSocket(2345);
Socket s = ss.accept();
ObjectInputStream ois = new ObjectInputStream(s.getInputStream());
System.out.println((HashMap<Integer, Integer>) ois.readObject());
System.out.println((HashMap<Integer, Integer>) ois.readObject());
ois.close;
}
上面的代碼來自兩個文件。 當運行它們,控制檯打印相同的結果:發送更改的hashmap,但使用ObjectOutputStream和ObjectInputStream獲得相同的一個
{1=1}
{1=1}
怎麼能這樣呢?
您也可以重置ObjectOutputStream(而不必創建一個新的hashmap對象)。 –
謝謝你,我想知道這是否會發生在其他的數據結構? – JustFF
當然,出現這種情況與所有對象。 – Thilo