序列化:Serializable

Posted 孟夏草木长

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了序列化:Serializable相关的知识,希望对你有一定的参考价值。

概述:当一个类实现了Serializable接口(该接口仅为标记接口,不包含任何方法定义),表示该类可以序列。序列化的目的是将一个实现了Serializable接口的对象转换成一个字节序列,可以把该字节序列保存起来(例如:保存在一个文件里),以后可以随时将该字节序列恢复为原来的对象。甚至可以将该字节序列放到其他计算机上或者通过网络传输到其他计算机上恢复,只要该计算机平台存在相应的类就可以正常恢复为原来的对象。

序列化的作用:为了保存在内存中各种对象的状态(也就是实例变量,不是方法),并且可以把保存的对象状态再读出来。

什么情况需要序列化:
  a)当你想把的内存中的对象状态保存到一个文件中或者数据库中时候;
  b)当你想用套接字在网络上传送对象的时候;
  c)当你想通过RMI传输对象的时候;

怎么序列化:调用ObjectOutputStream的writeObject
  FileOutputStream fs = new FileOutputStream("test.war");
  ObjectOutputStream os = new ObjectOutputStream(fs);
  os.writeObject(teacher);
  os.close();

怎样反序列化:调用ObjectInputStream的readObject()

ObjectInputStream in = new ObjectInputStream(new FileInputStream("test.war")) ;
Teacher teacher = (Teacher) in.readObject() ;
in.close();
System.out.println("---------"+teacher.getName());
System.out.println("---------"+teacher.getAge());
注:序列化会将对象的所有字段都序列化,所以如果某些字段不需要序列化就需加关键字transient

  一个类继承了Serializable接口,强烈建议 所有可序列化类都显式声明 serialVersionUID 值

 

以上是关于序列化:Serializable的主要内容,如果未能解决你的问题,请参考以下文章

什么是序列化? 如何实现(反)序列化 序列化的应用

什么是序列化? 如何实现(反)序列化 序列化的应用

如何序列化/反序列化的ArrayList

什么是java的序列化和反序列化?

Netty_05_六种序列化方式(JavaIO序列化 XML序列化 Hessian序列化 JSON序列化 Protobuf序列化 AVRO序列化)(实践类)

Netty_05_六种序列化方式(JavaIO序列化 XML序列化 Hessian序列化 JSON序列化 Protobuf序列化 AVRO序列化)(实践类)