Java中多次序列化同一个对象出现的问题

问题遇到的现象

在学习Java对象序列化的时候,看到了这么一个知识点:
在使用ObjectOutputStream的writeObject()方法多次对一个对象序列化的时候,只会在第一次序列化的时候写入序列化信息,在以后对该对象进行序列化的时候,如果发现该对象已经被序列化了之后,只会输出一个序列化的编号,用来保证序列化的对象是同一个对象.但是下面代码:

public class Demo2 {
    public static void main(String[] args) throws IOException, ClassNotFoundException {
        try (
                ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("a.txt"));
                ObjectInputStream ois = new ObjectInputStream(new FileInputStream("a.txt"))
        ) {
            Person ps = new Person("孙悟空", 500);
            // 序列化ps
            oos.writeObject(ps);
            // 修改ps的属性
            ps.name = "猪八戒";
            // 再次序列化
            oos.writeObject(ps);
            // 反序列化
            Person person1 = (Person) ois.readObject();
            Person person2 = (Person) ois.readObject();
            System.out.println(person1 == person2);
            System.out.println(person1.name + "=======" + person2.name);

        }
    }
}

class Person implements Serializable {
    String name;
    Integer age;

    public Person(String name, Integer age) {
        this.age = age;
        this.name = name;
    }
}
运行结果
true
孙悟空=======孙悟空

结果显示这两个反序列化的对象是同一个对象,并且name的属性值是第一次序列化的时候的属性值,我对对象的修改并没有生效,这也证实了第二次序列化的时候只是输出了一个编号,这是序列化的好处和弊端,但是这样的话我序列化一个对象之后就不能再对其做出更改了,如何避免上述代码出现的问题呢?

重新new一个Person。Person ps1 = new Person("猪八戒", 500);