Java-SE-序列化

来源:互联网 发布:怎么选购洗衣机知乎 编辑:程序博客网 时间:2024/06/08 05:10


一、定义

序列化是指将对象转化为字节序列的过程

反序列化是指将字节序列转化为对象的过程

二、API

java.io.ObjectOutputStream代表对象输出流,它的writeObject(Object obj)方法可对参数指定的obj对象进行序列化。

java.io.ObjectInputStream代表对象输入流,readObject()方法可从字节序列中读取一个对象。

只有实现了Serializeable接口的类才可以被序列化/反序列化。

实现序列化的步骤

1)创建对象输出流,可以包装其他输出流,如文件输出流

2)通过writeObject(obj)方法序列化对象

实现反序列化步骤

1)创建对象输入流,可以包装其他目标输入流,如文件输入流

2)通过readObject()方法反序列化对象


三、实例

下面程序通过读取book.txt文件实例化对象并添加到list中,然后分别使用序列化和反序列方法(反序列化要从序列化得到的文件中读取对象输入流信息)

package test_1;import java.io.Serializable;public class Book implements Serializable{/** *  */private static final long serialVersionUID = 1L;private int id;private String name;private String version;private float price;private int sale;public Book() {super();}public Book(int id, String name, String version, float price, int sale) {super();this.id = id;this.name = name;this.version = version;this.price = price;this.sale = sale;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getVersion() {return version;}public void setVersion(String version) {this.version = version;}public float getPrice() {return price;}public void setPrice(float price) {this.price = price;}public int getSale() {return sale;}public void setSale(int sale) {this.sale = sale;}public String toString(){return "id: "+ id + " name: "+name+" price " +price;}}
package test_1;import java.io.Serializable;public class Book implements Serializable{/** *  */private static final long serialVersionUID = 1L;private int id;private String name;private String version;private float price;private int sale;public Book() {super();}public Book(int id, String name, String version, float price, int sale) {super();this.id = id;this.name = name;this.version = version;this.price = price;this.sale = sale;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getVersion() {return version;}public void setVersion(String version) {this.version = version;}public float getPrice() {return price;}public void setPrice(float price) {this.price = price;}public int getSale() {return sale;}public void setSale(int sale) {this.sale = sale;}public String toString(){return "id: "+ id + " name: "+name+" price " +price;}}





原创粉丝点击