对象序列化为何要定义serialVersionUID的来龙去脉_第1页
对象序列化为何要定义serialVersionUID的来龙去脉_第2页
对象序列化为何要定义serialVersionUID的来龙去脉_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、博客分类:J2SE在很多应用中胃“服务器中的Sessbn对象.当有10万用户并发访何,就有可能出现10万个Sessioneb容器就会把一些seesin先序列化到内存.竽耍用再还原到对彖中.说口了 就是能将个2进制文件变成内存中的对象,在JAVASefcabfe接口就可以先看下面这个简单例子.seyersbnUI)稍后引出;我们先定义一个简单的Pexsonimport javaioSerializable;public class Person implements Serializable private String name;public String getName() return n

2、ame;public void setName(String name) thisname = name;import javaioFileinputstream;import javaioFileOutputst广earn;import javaioObjectlnputStream;import javaioObjectOutputStream;public class WhySerialversionUID public static void main(String args) throws Exception 这豐足把对象洋列化到文件Person crab = new Person(

3、);crab setName("Mr Crab*);Objectoutputstream oo = new ObjectOutputStream(new FileOutputStream("crab_fileM);oowriteobject(crab);ooclose();33 /ObjwctlnputStream oi = new ObjectInputstream34/ (new FileInputStream(*crab_file");35/Person crab_back = (Person) oireadobject();36("Hi, My

4、name is " + crab_back.getName();37/oidose();383940cmb对叙在内存中的形态。同样.我们把这部分代码一切都那么顺利.但是如果在序列化2后PezBon这个类发生了改变呢?比如.多了一个成员变址。我们做如下试验.还是先将对象序列化到一个文件中.Z后在Person这个类中添加一个成员变址如下:3ava代码奇2import javaioSerializable;Z 3public class Person implements Serializable 45private String name;6添加这么一个成员变fit7private St

5、ring address;89public String getName() 丄0return name;2112public void setName(String name) 23thisname = namej14252Exception in thread "main* java.ionvalidClassException: Person; local class incompatible: stream dassdescsemyeisbnUD = 8383901S21S72620925, bcalchss sem Jr总思就是说.文件涼中的chss Ulchsspalh中的chss也就堤修改过后的cbss.不兼容处干安全机制考虑.程 序抛出了错谋.并且拒绝枚入。那么如果我们真的有需求耍在序列化后添加一个字段或者方法呢?应该怎么办?那就是 自己去指定semyersbnUr. ZseryexsnnUD的.那么女心瀚译器会自动 给这个CJB33UDsenayersbnUD,编译器又为我 们生成了一个UD.当然和前面保存在文件中的那个不会一样了.于是就出现了 2个号码不一致的错谋。因此.只耍我 们自己指定了 segyei3i>nl;I)还原后 的对象照样可以使用.而且还多了方法可以用呵呵,但是seryersbnUI)我们怎么去生成呢?你可以写1 也可以

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论