/*****(Person类)*******/ import java.io.Serializable; public class Person implements Serializable { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } } /*****(将对象序列化到一个文件)*******/ import java.io.FileOutputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; public class WhySerialversionUID { public static void main(String[] args) throws Exception { Person person= new Person(); person.setName("jack"); ObjectOutputStream oo = new ObjectOutputStream (new FileOutputStream(new File("E://jack.test"))); oo.writeObject(person); oo.close(); /*****(通过以下方法可以正常的将文件中保存的对象还原到内存中)*******/ import java.io.FileOutputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; public class WhySerialversionUID { public static void main(String[] args) throws Exception { ObjectInputStream ois = new ObjectInputStream(new FileInputStream(new File("E:\\jack.test"))); Person person = (Person)ois.readObject(); String name= person.getName(); System.Out.Print("name is: "+name);一切都那么顺利,但是如果在序列化之后,Person这个类发生了改变呢?比如,多了一个成员变量。我们做如下试验,还是先将对象序列化到一个文件中,之后在Person这个类中添加一个成员变量,如下:
import java.io.Serializable; public class Person implements Serializable { private String name; //添加这么一个成员变量 private String address; public String getName() { return name; } public void setName(String name) { this.name = name; } }之后,我们再去运行一下还原,就发现运行出错了,会报如下错误:
原文地址:http://blog.csdn.net/happy_cheng/article/details/44069741