序列化:Serializable
概述:當一個類實現了Serializable接口(該接口僅為標記接口,不包含任何方法定義),表示該類可以序列。序列化的目的是將一個實現了Serializable接口的對象轉換成一個字節序列,可以把該字節序列保存起來(例如:保存在一個文件裏),以後可以隨時將該字節序列恢復為原來的對象。甚至可以將該字節序列放到其他計算機上或者通過網絡傳輸到其他計算機上恢復,只要該計算機平臺存在相應的類就可以正常恢復為原來的對象。
序列化的作用:為了保存在內存中各種對象的狀態(也就是實例變量,不是方法),並且可以把保存的對象狀態再讀出來。
什麽情況需要序列化:
a)當你想把的內存中的對象狀態保存到一個文件中或者數據庫中時候;
b)當你想用套接字在網絡上傳送對象的時候;
c)當你想通過RMI傳輸對象的時候;
怎麽序列化:調用ObjectOutputStream的writeObject
FileOutputStream fs = new FileOutputStream("test.war");
ObjectOutputStream os = new ObjectOutputStream(fs);
os.writeObject(teacher);
os.close();
怎樣反序列化:調用ObjectInputStream的readObject()
ObjectInputStream in = new ObjectInputStream(new FileInputStream("test.war")) ;
Teacher teacher = (Teacher) in.readObject() ;
in.close();
System.out.println("---------"+teacher.getName());
System.out.println("---------"+teacher.getAge());
註:序列化會將對象的所有字段都序列化,所以如果某些字段不需要序列化就需加關鍵字transient
一個類繼承了Serializable接口,強烈建議 所有可序列化類都顯式聲明 serialVersionUID 值
序列化:Serializable