所有的项目开发一定都有序列化的概念存在。
1.序列化的基本概念
对象序列化指的是:将内存中保存的对象变为二进制数据流的形式进行传输,或者是将其保存在文本中。但是并不意味着所有类的对象都可以被序列化,严格来讲,需要被序列化的类对象往往需要传输使用,同时这个类必须实现
java.io.Serializable接口。但是这个接口并没有任何的方法定义,只是一个标识而已。
范例:定义可以被序列化对象的类
序列化对象时所需要保存的就是对象中的属性,所以默认情况下对象的属性将被转为二进制数据流存在。
2.序列化与反序列化
如果要想实现序列化与反序列化的对象操作,在java.io包中提供有两个处理类:ObjectOutputStream、ObjectInputStream
首先来观察这两个类的定义结构及其各自的构造方法
范例:实现对象序列化
范例:实现对象反序列化
在以后实际项目的开发过程之中,你们根本就不需要知道如何实现序列化和反序列操作,因为都会由各自的容器帮助你自动处理。
只会在SpringData操作Redis里面才会出现自己实现序列化的操作。
3.transient关键字
实际上序列化的处理在java.io包里面有两类,Serializable是使用最多的序列化接口,这种操作采用自动化模式完成,也就是说默认情况下所有的属性都会被序列化下来。
还有一个Externalizable接口是需要用户自己动手来处理序列化,一般很少使用。
但是由于Serializable默认会将对象中所有属性进行序列化保存,如果现在某些属性不希望被保存了,那么就可以使用transient关键字。
范例:使用transient
大部分情况下使用序列化往往是在简单java类上,其他类上使用序列化的操作模式相对较少。而如果是简单java类,很少去使用transient关键字了。