通过 ObjectOutputStream 发送相同但经过修改的对象
2022-09-01 22:59:24
我有以下代码,显示了我的错误或误解。
我发送了相同的列表,但通过ObjectOutputStream进行了修改。一旦作为 [0] 和其他作为 [1]。但是当我读它时,我得到[0]两次。我认为这是由于我正在发送相同的对象并且ObjectOutputStream必须以某种方式缓存它们。
这是应该的工作,还是我应该提交错误?
import java.io.*; import java.net.*; import java.util.*; public class OOS { public static void main(String[] args) throws Exception { Thread t1 = new Thread(new Runnable() { public void run() { try { ServerSocket ss = new ServerSocket(12344); Socket s= ss.accept(); ObjectOutputStream oos = new ObjectOutputStream(s.getOutputStream()); List same = new ArrayList(); same.add(0); oos.writeObject(same); same.clear(); same.add(1); oos.writeObject(same); } catch(Exception e) { e.printStackTrace(); } } }); t1.start(); Socket s = new Socket("localhost", 12344); ObjectInputStream ois = new ObjectInputStream(s.getInputStream()); // outputs [0] as expected System.out.println(ois.readObject()); // outputs [0], but expected [1] System.out.println(ois.readObject()); System.exit(0); } }