Forpersonaluseonlyinstudyandresearch;mercialuse博客分类: J2SE 在很多应用中,需要对某些对象进行序列化,让它们离开内存空间,入住物理硬盘,以便长期保存。比如最常见的是Web服务器中的Session对象,当有10万用户并发访问,就有可能出现10万个Session对象,内存可能吃不消,于是Web容器就会把一些seesion先序列化到内存,等要用了,再还原到对象中,说白了,就是能将一个2进制文件变成内存中的对象。在JAVA中,要实现这种机制,只要实现Serializable接口就可以了,先看下面这个简单例子,serialVersionUID稍后引出。我们先定义一个简单的Person类,然后创建这个对象,最后序列化它到一个文件。 Java代码 import ; public class Person implements Serializable { private String name; public String getName() { return name; } public void setName(String name) { = name; } } import ; import ; import ; import ; public class WhySerialversionUID { public static void main(String[] args) throws Exception { //这里是把对象序列化到文件 Person crab = new Person(); (""); ObjectOutputStream oo = new ObjectOutputStream (new FileOutputStream("crab_file")); (crab); (); //这里是把对象序列化到文件,我们先注释掉,一会儿用 //ObjectInputStream oi = new ObjectInputStream // (new FileInputStream("crab_file")); //Person crab_back = (Person) (); //"Hi, My name is " + ()); //(); } } 运行完后,我们发现有了一个crab_file文件,这个文件就保存这crab对象在内存中的形态。同样,我们把这部分代码注释掉,运行下面那段还原代码,发现,crab_file文件可以被转化为一个对象。 一切都那么顺利,但是如果在序列化之后,Person这个类发生了改变呢?比如,多了一个成员变量。我们做如下试验,还是先将对象序列化到一个文件中,之后在Person这个类中添加一个成员变量,如下: Java代码 import ; public
对象序列化为何要定义serialVersionUID的来龙去脉 来自淘豆网m.daumloan.com转载请标明出处.