- 通过序列化可以将对象保存在磁盘或者网络中传递
- 实现对象的序列化,对应的类必须实现Serializable接口
- 通过java.io.ObjectOutputStream的
- writeObject()方法可以将对象输出到磁盘文件、网络等设备
- 通过java.io.ObjectInputStream的readObject()方法可以从磁盘文件中读出保存的对象
- 通过在属性前面加上transient关键字,限制属性写入到文件或网络中
例子:
package org.example.面向对象;
import java.awt.*;
import java.io.*;
public class SPerson implements Serializable {
public int age;
public transient String name;
public SPerson(){};
public SPerson(String name,int age){
this.name=name;
this.age=age;
}
public static void save(){
try{
ObjectOutputStream outputStream=new ObjectOutputStream((new FileOutputStream("person.txt")));
outputStream.writeObject(new SPerson("xiaohong",18));
outputStream.close();
}catch (Exception e){
e.printStackTrace();
}finally {
}
}
public static void read(){
try{
ObjectInputStream inputStream=new ObjectInputStream(new FileInputStream("person.txt"));
SPerson person=(SPerson) inputStream.readObject();
System.out.println(person.name+" "+person.age);
}catch (Exception e){
e.printStackTrace();
}finally {
}
}
}
serialVersionUID
实现Serializable接口后,一般要自己加上serialVersionUID,表明是这个类的序列号和反序列化的唯一标记;一般开发工具可以自动生成。在序列化的时候,会将这个UID存储到文件中;反序列的时候,会用文件中的UID和类中的UID进行比较,如果是不一样的,那么反序列话会失败。