• 关于Serializable序列化的简要说明
  • Tmac 发表于 2016/3/22 10:50:00 | 分类标签: 序列化 Serializable
  •  一、 持久化的简单介绍:

    “持久化”意味着对象的“生存时间”并不取决于程序是否正在执行——它存在或“生存”于程序的每一次调用之间。通过序列化一个对象,将其写入磁盘,以后在程序再次调用时重新恢复那个对象,就能圆满实现一种“持久”效果。

    二、 语言里增加了对象序列化的概念后,可提供对两种主要特性的支持:

    远程方法调用(RMI)使本来存在于其他机器的对象可以表现出好象就在本地机器上的行为。将消息发给远程对象时,需要通过对象序列化来传输参数和返回值。
    使用一个Java Bean 时,它的状态信息通常在设计期间配置好。程序启动以后,这种状态信息必须保存下来,以便程序启动以后恢复;具体工作由对象序列化完成。
     
    三、 Serializable的一些说明:

    对象的序列化处理非常简单,只需对象实现了Serializable 接口即可(该接口仅是一个标记,没有方法)
    序列化的对象包括基本数据类型,所有集合类以及其他许多东西,还有Class 对象
    对象序列化不仅保存了对象的“全景图”,而且能追踪对象内包含的所有句柄并保存那些对象;接着又能对每个对象内包含的句柄进行追踪
    使用transient关键字修饰的的变量,在序列化对象的过程中,该属性不会被序列化。

    四、 序列化的步骤:

    首先要创建某些OutputStream对象:OutputStream outputStream = new FileOutputStream("output.txt")
    将其封装到ObjectOutputStream对象内:ObjectOutputStream objectOutputStream = new ObjectOutputStream(outputStream);
    此后只需调用writeObject()即可完成对象的序列化,并将其发送给OutputStream:objectOutputStream.writeObject(Object);
    最后不要忘记关闭资源:objectOutputStream.close(), outputStream .close();

    五、 反序列化的步骤:

    首先要创建某些OutputStream对象:InputStream inputStream= new FileInputStream("output.txt")
    将其封装到ObjectInputStream对象内:ObjectInputStream objectInputStream= new ObjectInputStream(inputStream);
    此后只需调用writeObject()即可完成对象的反序列化:objectInputStream.readObject();
    最后不要忘记关闭资源:objectInputStream.close(),inputStream.close();
  • 请您注意

    ·自觉遵守:爱国、守法、自律、真实、文明的原则

    ·尊重网上道德,遵守《全国人大常委会关于维护互联网安全的决定》及中华人民共和国其他各项有关法律法规

    ·严禁发表危害国家安全,破坏民族团结、国家宗教政策和社会稳定,含侮辱、诽谤、教唆、淫秽等内容的作品

    ·承担一切因您的行为而直接或间接导致的民事或刑事法律责任

    ·您在编程中国社区新闻评论发表的作品,本网站有权在网站内保留、转载、引用或者删除

    ·参与本评论即表明您已经阅读并接受上述条款

  • 感谢本文作者
  • 作者头像
  • 昵称:Tmac
  • 加入时间:2013/6/13 0:00:00
  • TA的签名
  • 这家伙很懒,虾米都没写
  • +进入TA的空间
  • 以下内容也很赞哦
分享按钮