首页 > 其他分享 >序列化

序列化

时间:2022-12-21 11:44:48浏览次数:33  
标签:存储 读取 对象 写入 序列化 id

1. 序列化流
之前都是 内存(字符串,字节) <=> 磁盘

特点1: 内存(对象) <=> 磁盘

使用条件: 对象所属的类,必须要实现序列化接口
否则会出现报错:
java.io.NotSerializableException: day1221.demo01_serial_stream.Student 无法序列化错误

提示: 这个序列号接口, 只起到标记作用, 表示我们开发者是清晰的表明咱们的意图, 我们期望把这个类的对象存储到磁盘中


特点2: 序列化id一致, 即便写入和读取的时候类的结构不一样, 仍然可以强行读取;
如果写入和读取的时候的类的结构是完全一样的, 但是序列化id的数值不一样, 此时读取仍然会失败
小提示: 序列化id这个属性的名称如果记不住没有关系, 可以点到Serializable接口中去查阅

特点3: 可以通过追加写入的方式, 向同一个文件中存储两个对象, 但是, 读取的时候只能读取第一个对象, readObject只能一个文件执行一次
如果想要一次性写入和读取多个对象, 使用对象数组


特点4: 数据保密性问题, 如果某个对象的部分属性不希望被存储到文件中, 可以使用两种方式
1. 让这个属性不再属于对象
2. 使用序列化中专用的关键字, transient (第二种方式比第一种用的多的多)
扩展: 如果这个属性使用private修饰, 能否存储到文件中呢?

注意: 序列流将对象写入读取的的时候, class文件的结构必须一致, 否则会出现错误InvalidClassException 不合法的类错误

缺点: 可读性非常差

标签:存储,读取,对象,写入,序列化,id
From: https://www.cnblogs.com/p1121/p/16995912.html

相关文章