JAVA基础-Serializable序列化学习总结

Posted daiveking

tags:

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

一、JAVA基础-Serializable序列化解决啥问题

1、JAVA对象要通过IO流实现数据持久化,或者读写到硬盘必须要序列化,如果不序列化会抛出 java.io.NotSerializableException,JAVA实现序列化的方式有两种,实现 Serializable(不需要任何代码) 接口或者 Externalizable (需要写2个空方法)。

 

二、JAVA序列化可能遇到哪些问题

1、A对象引用B对象 ,如果要序列号A对象 必须要序列化B对象,依次类推。

2、实现序列化无效要创建无参数的构造方法。

3、序列化一个对象B后,A对象引用了B,序列化A对象,或者B对象属性修改后再次序列化B对象,B对象被反序列化后,熟悉没变,JAVA序列化机制所有的对象只序列化一次,无论他后面被序列化多少次,所有反序列化拿到的都是第一次序列化的B对象。

4、对于特殊字符需要安全保密的,可以在序列化的时候,加入自定义序列化,自定义序列化的方式有几种,1.可以使用transient 关键字,这样反序列化就那不多对应的值,也就是这个字段不会被序列化,也可以从写 writeObject  readObject 方法 (这两个方法可以使用加密算法和解密算法来对重要的数据进行加密,让人在反序列化之后不能获取到重要保密信息)  也可以复写writeReplace,此方法返回的是一个List。

三、序列化使用注意事项

1、对象和属性可以序列化,方法、static属性、transient 属性不会被序列化。

以上是关于JAVA基础-Serializable序列化学习总结的主要内容,如果未能解决你的问题,请参考以下文章

IPC基础

编程进阶:Java小白的序列化Serializable接口

java基础 序列化反序列化流 实现Serializable 接口 自动装载序列号到对象文本文件如修改不能反序列化对象文本,除非自定义long型常量 打印流

java编程基础-序列化与反序列化

Java IO学习笔记对象流

序列化与反序列化Serializable —— Java原生态方法