当前位置: 移动技术网 > IT编程>开发语言>Java > Java序列化与反序列化

Java序列化与反序列化

2019年11月26日  | 移动技术网IT编程  | 我要评论

java序列化(创建可复用的java对象)

保持(持久化)对象及其状态到内存或磁盘

  java平台允许我们在内存中创建可复用的java对象,但一般情况下,只有当jvm处于运行时,这些对象才可能存在,即这些对象的生命周期不会比jvm的生命周期更长。但在现实应用中,就可能要求在jvm停止运行之后能够保存(持久化)指定的对象,并在将来重新读取被保存的对象。java对象序列化就能够帮助我们实现该功能。

序列化对象以字节数组保持--静态成员不保存

  使用java对象序列化,在保存对象时,会把其状态保存为一组字节,在未来,再将这些字节组装成对象。必须注意的是,对象序列化保存的是对象的“状态”,即它的成员变量。由此可知,对象序列化不会关注类中的静态变量。

序列化用户远程对象传输

  除了在持久化对象时会用到对象序列化之外,当使用rmi(远程方法调用),或在网络中传递对象时,都会用到对象序列化。java序列化api为处理对象序列化提供了一个标准机制,该api简单易用。

serializable实现序列化

  在java中,只要一个类实现了java.io.serializable接口,那么它就可以被序列化。

objectoutputstream和objectinputstream对对象进行序列化及反序列化

writeobject和readobject自定义序列化策略

  在类中增加writeibject和readobject方法可以实现自定义序列化策略。

序列化id

  虚拟机是否允许反序列化,不仅取决于类路径和功能代码是否一致,一个非常重要的一点是两个类的序列化id是否一致(就是private static final long serialversionuid)。

序列化不保存静态变量

序列化子父类说明

  要想将父类对象也序列化,就需要让父类也实现serializable接口。

transient关键字阻止该变量被序列化到文件中

  1.在变量声明前加上transient关键字,可以阻止该变量被序列化到文件中,在被反序列化后,transient变量的值被设为初始值,如int型的是0,对象型的是null。

  2.服务器端给客户端发送序列化对象数据,对象中有一些数据是敏感的,比如密码字符串等,希望对该密码字段在序列化时,进行加密,而客户端如果拥有解密的密钥,只有在客户端进行反序列化时,才可以对密码进行读取,这样可以一定程度保证序列化对象的数据安全。

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网