在此分享一下Java编程之对象序列化解析!
Java平台允许我们在内存中创建可复用的Java对象,但一般情况下,只有当JVM处于运行时,这些对象才可能存在,这些对象的生命周期不会比JVM的生命周期更长。
但在现实应用中,就可能要求在JVM停止运行之后能够保存(持久化)指定的对象,并在将来重新读取被保存的对象。Java对象序列化就能够帮助我们实现该功能。
使用Java对象序列化,在保存对象时,会把其状态保存为一组字节,在未来,再将这些字节组装成对象。必须注意地是,对象序列化保存的是对象的"状态",即它的成员变量。
由此可知,对象序列化不会关注类中的静态变量。 除了在持久化对象时会用到对象序列化之外,当使用RMI(远程方法调用),或在网络中传递对象时,都会用到对象序列化。
再举一个简单的例子。
在Java中,只要一个类实现了java.io.Serializable接口,那么它就可以被序列化。
此处将创建一个可序列化的类Ykmaiz,Sex类,是一个枚举类型,表示性别
public enum Sex {MALE, FEMALE}
如果熟悉Java枚举类型的话,应该知道每个枚举类型都会默认继承类java.lang.Enum,而该类实现了Serializable接口,所以枚举类型对象都是 自吸泵默认可以被序列化的。
Ykmaiz类,实现了Serializable接口,它包含三个字段:name,String类型;age,Integer类型;Sex,Sex类型。
SimpleSerial,是一个简单的序列化程序,它先将一个Ykmaiz对象保存到文件Ykmaiz.out中,然后再从该文件中读出被存储的Ykmaiz对象,并打印该对象。