对象序列化与反序列化 对象中的数据有:new Object() 自己的成员变量 如果对象的基本数据不变,反复使用 什么是序列化 将对象中的数据以二进制方式存入硬盘,永久保存 二进制文件可以在网络上传输 反序列化 将存在硬盘中的二进制文件,读取出来还原对象中的数据写对象的流,实现对象的序列化,Java.io.ObjectOutputStream 读对象的流,实现对象的序列化,java.io.ObjectInputStream对象类,需要实现Serializable开启序列化功能 静态,成员变量,属于自己的类,不属于对象,不能序列化 transient 修饰成员变量,组织对象序列化 Serializable接口, 里面没有抽象方法,实现后,不用写任何方法,修改源代码后,class文件不会重新计算序列号 给类,自己定义一个序列号Exception in thread "main" java.io.InvalidClassException: Person; local class incompatible: stream classdesc serialVersionUID = 5106964254523124602,local class serialVersionUID = -3636218586871335542
import java.io.*;/*** @author Alina* @date 2021年12月11日 4:28 下午* 对象序列化*/
public class ObjectStreamDemo {public static void main(String[] args) throws IOException, ClassNotFoundException {// writeObiect();readObject();}public static void writeObiect() throws IOException {ObjectOutputStream oop = new ObjectOutputStream(new FileOutputStream("/Users/yuzhang/Desktop/IOPrctice/test2.txt"));Person p = new Person();oop.writeObject(p);oop.flush();oop.close();}public static void readObject() throws IOException, ClassNotFoundException {ObjectInputStream ois = new ObjectInputStream(new FileInputStream("/Users/yuzhang/Desktop/IOPrctice/test2.txt"));Object obj = ois.readObject();System.out.println(obj);}
}