目录
- 什么是序列化
- 序列化实现方式?
- 对象的部分序列化?
序列化是将内存中的变量或对象转换为可存储或可传输的状态;(持久化)
实现Serializable接口;
静态变量不能被序列化;transient关键字对部分字段不进行序列化;覆盖writeObject、readObject方法以实现序列化过程自定义;
public void writeObject(ObjectOutput out) throws IOException {
out.writeObject(uuid);
out.writeObject(name);
}
public void readObject(ObjectInput in) throws IOException, ClassNotFoundException {
name = (String) in.readObject();
uuid = (String) in.readObject();
}
- UUID生成方法
public Book() {
this.uuid =UUID.randomUUID().toString();
}
- 具体代码
package xuli;
import java.io.IOException;
import java.io.ObjectInput;
import java.io.ObjectOutput;
import java.io.Serializable;
import java.util.UUID;
public class Book implements Serializable{
private static final long serialVersionUID = 1L;
//uuid
private String uuid;
private String name;
private String type;
private int number;
@Override
public String toString() {
return "Book [uuid=" + uuid + ", name=" + name + ", type=" + type + ", number=" + number + "]";
}
public Book() {
this.uuid =UUID.randomUUID().toString();
}
public String getUuid() {
return uuid;
}
public void setUuid(String uuid) {
this.uuid = uuid;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public int getNumber() {
return number;
}
public void setNumber(int number) {
this.number = number;
}
public void writeObject(ObjectOutput out) throws IOException {
out.writeObject(uuid);
out.writeObject(name);
}
public void readObject(ObjectInput in) throws IOException, ClassNotFoundException {
name = (String) in.readObject();
uuid = (String) in.readObject();
}
}
package cn.jsaa;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import xuli.Book;
public class BookApp {
public static void main(String[] args) throws FileNotFoundException, IOException, ClassNotFoundException {
write();
read();
}
private static void read() throws FileNotFoundException, IOException, ClassNotFoundException {
ObjectInputStream oos=new ObjectInputStream(new FileInputStream("book.obj"));
xuli.Book book=new Book();
book =(Book)oos.readObject();
System.out.println(book);
}
private static void write() throws IOException, FileNotFoundException {
ObjectOutputStream oos=new ObjectOutputStream(new FileOutputStream("book.obj"));
xuli.Book book=new Book();
book.setName("我好");
book.setNumber(2);
book.setType("te");
oos.writeObject(book);
}
}