青菜猫(孙宇博客),青菜猫(孙宇博客),青菜猫(孙宇博客)http://www.javasdc.cn/
posts - 29,  comments - 63,  trackbacks - 0
1、序列化是干什么的?
简单说就是为了保存在内存中的各种对象的状态(也就是实例变量,不是方法),并且可以把保存的对象状态再读出来。虽然你可以用你自己的各种各样的方法来保 存object states,但是Java给你提供一种应该比你自己好的保存对象状态的机制,那就是序列化。
2.什么是反序列化
和上面相反,就是把object states转换为各种对象状态
3、什么情况下需要序列化
a)当你想把的内存中的对象状态保存到一个文件中或者数据库中时候。(大家可以看看String类,肯定是会implements java.io.Serializable)
b)当你想用套接字在网络上传送对象的时候;
c)当你想通过RMI传输对象的时候、
3、相关注意事项
a)当一个父类实现序列化,子类自动实现序列化,不需要显式实现Serializable接口
b)序列化时,只对对象的状态进行保存,而不管对象的方法
c)对于关键词transient,表示一个域不会被序列化。举例说明
public class Ca implements Serializable {
    private static final long serialVersionUID = 2161216686162584206L;
    int a;
    transient String b;
    Ca(int a,String b){
        this.a=a;
        this.b=b;
    }
    public String toString(){
           return "a = "+a+",b = "+b;
    }

}

在另外类中调用toString方法。
           Ca a = new Ca(1,"test");
           System.out.println(a);
           ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("c:\\test.out"));
           oos.writeObject(a);
           oos.reset();
           oos.close();
           ObjectInputStream ois = new ObjectInputStream(new FileInputStream("c:\\test.out"));
           a = (Ca)ois.readObject();
           System.out.println(a);  
如果    transient String b;这样出来的效果是
a = 1,b = test
a = 1,b = null
去掉的话
a = 1,b = test
a = 1,b = test
这样就可以知道transient在反序列化的时候不能得到值,因为写入的时候就没有被序列化
d)serialVersionUID   用来表明类的不同版本间的兼容性。如果你修改了此类,   要修改此值。否则以前用老版本的类序列化的类恢复时会出错.
 在JDK中,可以利用JDK的bin目录下的serialver.exe工具产生这个serialVersionUID,对于Test.class,执行命令:serialver   Test。  
在项目中建议大家不要改serialVersionUID   这个值。,特别是要用的缓存。一旦serialVersionUID被改变,旧有的序列化对象就不能被被反序列化了,会抛出如下异常:
java.io.InvalidClassException: MyObject; local class incompatible: stream classdesc serialVersionUID = a, local class serialVersionUID = b
   
posted on 2010-08-24 10:57 青菜猫(孙宇) 阅读(257) 评论(0)  编辑  收藏 所属分类: java

只有注册用户登录后才能发表评论。


网站导航:
 
<2010年8月>
25262728293031
1234567
891011121314
15161718192021
22232425262728
2930311234

青菜猫(孙宇)结交天下朋友,在网上吸取知识..

常用链接

留言簿(16)

随笔分类

随笔档案

文章分类

搜索

  •  

最新评论

阅读排行榜

评论排行榜

青菜猫(孙宇博客),青菜猫(孙宇博客),青菜猫(孙宇博客)http://www.javasdc.cn/