Skip to content

Commit c1f0281

Browse files
authored
Update java-serialization.md
readResolve, not readObject
1 parent b19b03d commit c1f0281

File tree

1 file changed

+8
-4
lines changed

1 file changed

+8
-4
lines changed

docs/io/java-serialization.md

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -405,18 +405,22 @@ public class SerializeDemo04 {
405405
// false
406406
```
407407

408-
值得注意的是,从文件中获取的 Person 对象与 Person 类中的单例对象并不相等。**为了能在单例类中仍然保持序列的特性,可以使用 `readResolve()` 方法**。在该方法中直接返回 Person 的单例对象。我们在 SerializeDemo04 示例的基础上添加一个 `readObject` 方法, 如下所示:
408+
值得注意的是,从文件中获取的 Person 对象与 Person 类中的单例对象并不相等。**为了能在单例类中仍然保持序列的特性,可以使用 `readResolve()` 方法**。在该方法中直接返回 Person 的单例对象。我们在 SerializeDemo04 示例的基础上添加一个 `readResolve` 方法, 如下所示:
409409

410410
```java
411411
public class SerializeDemo05 {
412412
// 其他内容略
413413

414414
static class Person implements Serializable {
415415

416+
// private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
417+
// in.defaultReadObject();
418+
// age = in.readInt();
419+
// }
420+
416421
// 添加此方法
417-
private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
418-
in.defaultReadObject();
419-
age = in.readInt();
422+
private Object readResolve() {
423+
return instatnce;
420424
}
421425
// 其他内容略
422426
}

0 commit comments

Comments
 (0)