Rek*_*kha 4 java serialization
标题告诉我的需要,以下是我使用的代码:
SameObjectDifferentStreams same = new SameObjectDifferentStreams();
ObjectOutputStream out1 = new ObjectOutputStream(new FileOutputStream("file1"));
ObjectOutputStream out2 = new ObjectOutputStream(new FileOutputStream("file2"));
out1.writeObject(same);
out1.close();
out2.writeObject(same);
out2.close();
System.out.println("The Original reference is :" + same.toString());
oin1 = new ObjectInputStream(new FileInputStream("file1"));
oin2 = new ObjectInputStream(new FileInputStream("file2"));
SameObjectDifferentStreams same1 =
(SameObjectDifferentStreams) oin1.readObject();
System.out.println("The First Instance is :" + same1.toString());
SameObjectDifferentStreams same2 =
(SameObjectDifferentStreams) oin2.readObject();
System.out.println("The Second Instance is :" + same2.toString());
Run Code Online (Sandbox Code Playgroud)
The Original reference is :serialization.SameObjectDifferentStreams@9304b1
The First Instance is :serialization.SameObjectDifferentStreams@190d11
The Second Instance is :serialization.SameObjectDifferentStreams@a90653
Run Code Online (Sandbox Code Playgroud)
当您将对象写入流时,您实际上将其序列化,即仅写入其数据.然后,当您阅读它时,您将读取数据并创建新对象.就像new MyObject()使用适当的构造函数参数调用一样.显然,这里创建了新对象.
如果您两次读取相同的序列化对象,则创建两次新实例.这两个实例是相等的,即它们的所有字段都相等,但引用不同,因此表达式o1==o2返回false,而(如果实现合理的equals()方法)则o1.equals(o2)返回true.
| 归档时间: |
|
| 查看次数: |
115 次 |
| 最近记录: |