蝴蝶效应-虎的博客
博客信息

Java序列化是什么,为什么序列化,如何序列化

0
发布时间:『 2019-10-04 21:21』  博客类别:Java Web基础知识  阅读(1004) 评论(0)

序列化是什么?
      序列化是把Java对象转化为可存储的信息保存到文件中的过程, 序列化Serialization在Java中,我们一般需要将保存到本地或者在网络中传输的对象,继承Serializable接口,以实现将对象序列化的目的。
反序列化是什么?
      既然序列化是将对象转化为可存储的信息保存到文件中的过程,那么反序列化就是把文件中的Java对象读取到Java程序中的过程。
为什么要序列化?
      因为在Java的使用中,经常会需要把Java对象保存到文件中以实现Session共享;或者将Java数据临时存储为文件,以防止因为非人为因素造成的不可逆转的损失;或者在网络传输中,我们需要对Java对象在网络间实现传输,这些就需要对Java对象进行序列化操作。实际使用中,需要实现序列化的原因很多,我这里就暂时列举这几种。
如何序列化?
    继承Serializable接口,使用Java类ObjectOutputStream(序列化) , ObjectInputStream(反序列化)进行序列化,相关的例子有:
    继承Serializable接口的Colleague类

  
public class Colleague implements Serializable {
private static final long serialVersionUID = 888999L; //被static修饰的成员变量在序列化时不会保存到文件中
private String id;
private transient int sage; //如果不想序列化该字段,就需要添加transient修饰
private String sname;
private double department;

    使用Java类ObjectOutputStream进行序列化,注意捕获异常NotSerializableException,IOException

  
Colleague colleague = new Colleague ();
ObjectOutputStream testoos = new ObjectOutputStream(new FileOutputStream(“testColeague.txt”));
testoos .writeObject(colleague );
testoos .close();

    使用Java类ObjectInputStream进行反序列化,注意捕获异常IOException,ClassNotFoundException

  
ObjectInputStream oistest = new ObjectInputStream(new FileInputStream(“testColeague.txtt”));
Colleague colleague = (Colleague)oistest .readObject();
System.out.println("Colleague = " + colleague.toString() );
oistest .close();

序列化的注意事项:
1 序列化只会保存Java对象当时的状态,但是不会保存对象里面的方法的
2 序列化是可以传递的,如果父类实现了序列化接口,那么子类也就可以进行序列化操作
3 序列化的对象引用了其他对象,尽管这个其他对象没有实现序列化接口,但是序列化的对象在序列化的时候还是会对这个被引用的对象进行序列化

 

关键字:   Java     Java序列化  
评论信息
暂无评论
发表评论
验证码: 
博主信息
【蝴蝶效应-虎】
  年轻只有一次,但是梦想却可以奋斗一辈子!

博主寄语:也曾年少轻狂,无奈时光易老!希望将绵薄的技术分享进行到底。
有求必应:如果需要帮助,请给我留言,一定知无不言,言无不尽,请大家多多支持博主,谢谢。
分享无悔:如果有一天你可以回到过去,你还愿意成为现在的自己吗?不让自己后悔,时光无悔。
  • 36文章总数
  • 5486访问次数
  • 38建站天数
  • 友情链接
    Copyright © 2019-2025 蝴蝶效应-虎
    陕ICP备19011911号-2