为何JAVA对象须要实现序列化?

  • 序列化是一种用来处理对象流的机制。java

  • 所谓对象流:就是将对象的内容进行流化。能够对流化后的对象进行读写操做,也可将流化后的对象传输于网络之间。数据库

  • 序列化是为了解决在对对象流进行读写操做时所引起的问题。编程

  • 序列化的实现:将须要被序列化的类实现Serializable接口(标记接口),该接口没有须要实现的方法,implements Serializable只是为了标注该对象是可被序列化的,而后使用一个输出流(如:FileOutputStream)来构造一个ObjectOutputStream(对象流)对象;接着,使用ObjectOutputStream对象的writeObject(Object obj)方法就能够将参数为obj的对象写出(即保存其状态),要恢复的话则用输入流。网络

  • 何时使用序列化呢?app

    • 一:对象序列化能够实现分布式对象
      主要应用例如:RMI(即远程调用Remote Method Invocation)要利用对象序列化运行远程主机上的服务,就像在本地机上运行对象时同样。
    • 二:java对象序列化不只保留一个对象的数据,并且递归保存对象引用的每一个对象的数据。
      能够将整个对象层次写入字节流中,能够保存在文件中或在网络链接上传递。利用对象序列化能够进行对象的"深复制",即复制对象自己及引用的对象自己。序列化一个对象可能获得整个对象序列。
    • 三:序列化能够将内存中的类写入文件或数据库中。
      好比:将某个类序列化后存为文件,下次读取时只需将文件中的数据反序列化就能够将原先的类还原到内存中。也能够将类序列化为流数据进行传输。总的来讲就是将一个已经实例化的类转成文件存储,下次须要实例化的时候只要反序列化便可将类实例化到内存中并保留序列化时类中的全部变量和状态。
    • 四: 对象、文件、数据,有许多不一样的格式,很难统一传输和保存。
      序列化之后就都是字节流了,不管原来是什么东西,都能变成同样的东西,就能够进行通用的格式传输或保存,传输结束之后,要再次使用,就进行反序列化还原,这样对象仍是对象,文件仍是文件
  • 由于JAVA中要将对象序列化为 流的形式 进行传输。分布式


  • 对象的序列化就是为了数据传输,在你的代码的里是对象格式,而在传输的时候不可能还保持这对象的样子。
  • 当两个进程在进行远程通讯时,彼此能够发送各类类型的数据。不管是何种类型的数据,都会以二进制序列的形式在网络上传送。发送方须要把这个Java对象转换为字节序列,才能在网络上传送;接收方则须要把字节序列再恢复为Java对象。
  • 1.概念
    • 序列化:把Java对象转换为字节序列的过程。
    • 反序列化:把字节序列恢复为Java对象的过程。
  • 2.用途 对象的序列化主要有两种用途:
    • 1)把对象的字节序列永久地保存到硬盘上,一般存放在一个文件中。
    • 2)在网络上传送对象的字节序列。

  • 所谓的Serializable,就是java提供的通用数据保存和读取的接口。至于从什么地方读出来和保存到哪里去都被隐藏在函数参数的背后了。这样子,任何类型只要实现了Serializable接口,就能够被保存到文件中,或者做为数据流经过网络发送到别的地方。也能够用管道来传输到系统的其余程序中。这样子极大的简化了类的设计。只要设计一个保存一个读取功能就能解决上面说得全部问题。
  • java的"对象序列化"能让你将一个实现了Serializable接口的对象转换成一组byte,这样往后要用这个对象时候,你就能把这些byte数据恢复出来,并据此从新构建那个对象了。
  • 工做流当中流程变量的几种数据类型:string、integer、short、long、double、boolean、date、binary、serializable,这就是为何要将javabean实现序列化的缘由,由于你将对象设置到流程变量中必需要实现序列化,不然会在设置流程变量的时候报错找不到该类型。
  • java对象序列化机制就是把内存中的Java对象(User之类的JavaBean)转换成二进制流。java对象序列化后能够很方便的存储或者在网络中传输。
  • Java的序列化机制是经过运行时判断类的序列化ID(serialVersionUID)来断定版本的一致性。
  • 在反序列化时,java虚拟机会经过二进制流中的serialVersionUID与本地的对应的实体类进行比较,若是相同就认为是一致的,能够进行反序列化,正确得到信息,不然抛出序列化版本不一致的异常。
  • 因此涉及到数据传输或者存储的类,严格意义上来讲都要加上序列化ID,这也是一种良好的编程习惯
相关文章
相关标签/搜索