1、Java序列化
Java
序列化是指把
Java
对象转换为字节序列的过程,
Java
反序列化是指把字节序列恢复为
Java
对象的过程。通过徐序列化和反序列化实现网络传输、本地存储的目的。
1.1 Serializable实现Java序列化
要实现
Java
对象的序列化,只要
将类实现标识接口
——Serializable
接口
即可,不需要我们重写任何方法就可以实现序列化。
案例:Java实现Serializable接口进行序列化案例。
1.1.1 编写实体类
import java.io.Serializable;
import java.util.List;
/**
* 学生实体类
*/
public class Student implements Serializable{
/**
* 学号
*/
private String stuNum;
/**
* 姓名
*/
private String stuName;
/**
* 教师姓名:一个学生可以有多个老师
*/
private List<String> teacherList;
//无参数构造方法
public Student() {
}
//全参构造方法
public Student(String stuNum, String stuName, List<String> teacherList) {
this.stuNum = stuNum;
this.stuName = stuName;
this.teacherList = teacherList;
}
@Override
public String toString() {
return "Student{" +
"stuNum='" + stuNum + '\'' +
", stuName='" + stuName + '\'' +
", teacherList=" + teacherList +
'}';
}
public String getStuNum() {
return stuNum;
}
public void setStuNum(String stuNum) {
this.stuNum = stuNum;
}
public String getStuName() {
return stuName;
}
public void setStuName(String stuName) {
this.stuName = stuName;
}
public List<String> getTeacherList() {
return teacherList;
}
public void setTeacherList(List<String> teacherList) {
this.teacherList = teacherList;
}
}
1.1.2 编写Java对象序列化和反序列化工具类
import java.io.*;
/**
* 序列化和反序列化的工具类
*/
public class MySerializeUtil {
/**
* 将对象序列化到指定文件中
* @param obj
* @param fileName
*/
public static void mySerialize(Object obj,String fileName) throws
IOException {
OutputStream out=new FileOutputStream(fileName);
ObjectOutputStream objOut=new ObjectOutputStream(out);
objOut.writeObject(obj);
objOut.close();
}
/**
* 从指定文件中反序列化对象
* @param fileName
* @return
*/
public static Object myDeserialize(String fileName) throws IOException,
ClassNotFoundException {
InputStream in=new FileInputStream(fileName);
ObjectInputStream objIn=new ObjectInputStream(in);
Object obj=objIn.readObject();
return obj;
}
}