一、序列化和反序列化
对象的序列化:把对象转化为字节序列化的过程。
对象的反序列化:把字节序列化恢复为对象的过程。
对象序列化的用途
1、把对象永久的保存到硬盘上,通常存放在一个文件中。
2、在网络上传出对象的字节序列。
序列化的实现
只有实现了Serializable和Externalizable接口的类的对象才能被序列化。Externalizable接口继承自 Serializable接口,实现Externalizable接口的类完全由自身来控制序列化的行为,而仅实现Serializable接口的类可以 采用默认的序列化方式 。
二、序列化和反序列化示例
1、实现Serializable
Books.java
1 package com.serialize.test; 2 3 import java.io.*; 4 5 /** 6 * Created by Administrator on 2018/3/15. 7 */ 8 public class Books implements Serializable { 9 /** 10 * 序列化版本号 11 */ 12 private static final long serialVersionUID = 1L; 13 private int bookId; 14 private String bookName; 15 private double bookPrice; 16 private String publish; 17 private transient int num; 18 @Override 19 public String toString() { 20 String str = "bookId-->" + bookId + "\nbookName-->" 21 + bookName + "\nbookPrice-->" + bookPrice + "\npublish-->" + publish + "\nnum-->" + num; 22 return str; 23 } 24 public int getNum() { 25 return num; 26 } 27 public void setNum(int num) { 28 this.num = num; 29 } 30 public int getBookId() { 31 return bookId; 32 } 33 public void setBookId(int bookId) { 34 this.bookId = bookId; 35 } 36 public String getBookName() { 37 return bookName; 38 } 39 public void setBookName(String bookName) { 40 this.bookName = bookName; 41 } 42 public double getBookPrice() { 43 return bookPrice; 44 } 45 public void setBookPrice(double bookPrice) { 46 this.bookPrice = bookPrice; 47 } 48 public String getPublish() { 49 return publish; 50 } 51 public void setPublish(String publish) { 52 this.publish = publish; 53 } 54 }