19、Java 序列化
1、序列化的概念,意义以及使用场景
序列化:
将对象写入到IO流中,也就是把Java对象转换为字节序列的过程
反序列化:
从IO流中恢复对象*,也就是把字节序列恢复为Java对象的过程
意义:
序列化机制允许将实现序列化的Java对象转换位字节序列,这些字节序列可以保存在磁盘上,或通过网络传输,以达到以后恢复成原来的对象。序列化机制使得对象可以脱离程序的运行而独立存在。
使用场景:
(1)永久性保存对象,保存对象的字节序列到本地文件或者数据库中;、
(2)通过序列化以字节流的形式使对象在网络中进行传递和接收;
(3)通过序列化在进程间传递对象;
所有可在网络上传输的对象都必须是可序列化的,比如RMI(remote method invoke,即远程方法调用),传入的参数或返回的对象都是可序列化的,否则会出错;所有需要保存到磁盘的java对象都必须是可序列化的。通常建议:程序创建的每个JavaBean类都实现Serializeable接口。
2、好处
其实好处是根据使用场景来的;
(1)实现了数据的持久化,通过序列化可以把数据永久地保存到硬盘上
(2)利用序列化实现远程通信,即在网络上传送对象的字节序列。
3、Java中实现序列化的俩种方式
3.1 使用Serializable接口实现序列化
定义一个对象类 Student
package com.example.main;
import java.io.*;
/**
* @author lin
* @version 1.0
* @date 2020/7/11 22:04
* @Description TODO
*/
public class Student implements Serializable {
/**
* 序列化版本号
*/
private static final long serialVe