IO流--序列化流与反序列化流:
序列化流:把对象当做流一样写入到文本文件中 ObjectOutputSream();
反序列化流:把文本文件中的流对象还原成对象ObjectInputSream();
具体的使用:
1 创建java对象 实现序列化接口(Serializable):
序列化代码实现:
1 private void writer() throws IOException { 2 ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("OnlyFileTest\\testObj.txt")); 3 Student student = new Student("无极",23); 4 oos.writeObject(student); 5 oos.close(); 6 }
反序列化代码实现:
private void read() throws IOException, ClassNotFoundException { ObjectInputStream ois = new ObjectInputStream(new FileInputStream("OnlyFileTest\\testObj.txt")); Object o = ois.readObject(); ois.close(); System.out.println(o); }
因为类实现了serializable接口(只起对类进行标记的作用!!),底层会生成serialVersionUID;我们每次修改java文件,id会变化,就会导致读写id的值不匹配,就会报错;
解决:让id是一个固定的值即可:
使用 Idea自动生成serialVersionUID:
完整操作流程:Setting->Editor->Inspections->Java->Serialization issues->Serializable class without ‘serialVersionUID’(选择勾上)
配置完成后,如果你的Class实现了Serializable接口,那么将光标停留在类名上,然后按Alt+Enter就会提示自动创建serialVersionUID了。
2:如果一个类实现Serializable接口后,不想里面的某个成员变量被序列化:可使用 transient 关键字;
原文地址:https://www.cnblogs.com/dw3306/p/9459186.html
时间: 2024-10-14 00:55:39