码迷,mamicode.com
首页 > 其他好文 > 详细

Serializable接口

时间:2018-03-08 20:22:05      阅读:132      评论:0      收藏:0      [点我收藏+]

标签:需要   意思   ast   反序   html   puts   序列   zab   cto   

>官方解释:

Serializable接口是启用其序列化功能的接口。实现java.io.Serializable 接口的类是可序列化的。没有实现此接口的类将不能使它们的任意状态被序列化或逆序列化。
>通俗地说:
任何类型只要实现了Serializable接口,就可以被保存到文件中,或者作为数据流通过网络发送到别的地方。也可以用管道来传输到系统的其他程序中。
     
  Serializable本身并没有任何成员变量和函数,它的作用只相当于一个标记,实现了该接口的类,就是告诉Java这个类是可读写的,可以写入Byte流(序列化),也可以从Byte流读取(反序列化)。
 
  所以,需要用到Serializable的主要有两个地方:
  • 需要把对象保存到数据库或文件中
  • 需要把对象通过网络传输
>如何使用:
  通过ObjectOutputStream 的writeObject()方法把这个类的对象写到一个地方(文件),再通过ObjectInputStream 的readObject()方法把这个对象读出来。
 
>几点注意:
  1. serialVersionUID:一般为固定的1L,也可以随机生成一个不重复的long类型数。可以理解为该可序列化类的标识,如果序列化和反序列化时涉及的类相同,但serialVersionUID不同,会导致反序列化失败,在网络传输时尤其需要注意。无特殊需要时,可默认1L;随机long型数可用于限制某些用户访问。
  2. 静态成员变量:类中的静态成员变量并不会被序列化保存,反序列化时为初始默认值。
  3. transient关键字:某些变量不想被序列化,又不适合静态声明,则可以用transient关键字修饰,反序列化时同样为初始值。transient是瞬时的意思,所以适用于一些瞬时变化的不适合保存的变量。
  4. 继承:父类实现Serializable后,子类自动实现。如果父类未实现,则需要有默认的无参构造函数,供子类反序列化的时候调用。

感谢:本文要点收集整理来自http://blademastercoder.github.io/2015/01/29/java-Serializable.html

  
  

Serializable接口

标签:需要   意思   ast   反序   html   puts   序列   zab   cto   

原文地址:https://www.cnblogs.com/mandylu2018/p/8529576.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!