一、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 属性不会被序列化。