对象序列化(Serializable)是指将对象转换为字节序列的过程,而反序列化则是根据字节序列恢复对象的过程。
序列化一般用于以下场景:
1.永久性保存对象,保存对象的字节序列到本地文件中;
2.通过序列化对象在网络中传递对象;
序列化一般用于以下场景:
1.永久性保存对象,保存对象的字节序列到本地文件中;
2.通过序列化对象在网络中传递对象;
3.通过序列化在进程间传递对象。
一。编写一个可以序列化的类
public class Dog implements Serializable{
private int size;
private String name;
public Dog(int size, String name) {
super();
this.size = size;
this.name = name;
}
//geter setter
}
二。编写测试类
package cn.edu.hpu.example;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
public class SerializationDemo {
public static void main(String[] args) throws IOException,
ClassNotFoundException {
//序列化
FileOutputStream fos = new FileOutputStream("role.txt");
ObjectOutputStream os = new ObjectOutputStream(fos);
Dog d1 = new Dog(21, "lucky");
Dog d2 = new Dog(29, "lucky2");
Dog d3 = new Dog(19, "lucky3");
os.writeObject(d1);
os.writeObject(d2);
os.writeObject(d3);
os.close();
/*
//反序列化 字节转换成对象
FileInputStream fis = new FileInputStream("role.txt");
ObjectInputStream is = new ObjectInputStream(fis);
Object o1 = is.readObject();
Object o2 = is.readObject();
Object o3 = is.readObject();
Dog d1 = (Dog) o1;
Dog d2 = (Dog) o2;
Dog d3 = (Dog) o3;
System.out.println(d1.getName() + "," + d1.getSize());
System.out.println(d2.getName() + "," + d2.getSize());
System.out.println(d3.getName() + "," + d3.getSize());
is.close();
*/
}
}