Java中序列化是指將Java對象通過變換成爲字節序列,來將該對象持久化到硬盤中。並且字節序列也很適合網絡傳輸,因此如果需要在網絡中傳遞Java對象,可以在其先序列化後進行傳輸,並由接收方進行反序列化操作。Java中反序列化是指將序列化的字節序列重新組織成Java對象,實際上,序列化是指將Java對象轉換爲字節序列,而反序列化是指將字節序列轉換爲Java對象。
假設存在一個User對象,其代碼如下:
public class User implements Serializable{
public String name;
public int age;
}
如果需要進行序列化,可以:
User user = new User();
user.name = "XuJun";
user.age = 13;
File file = new File("user.txt");
ObjectOutputStream objOut = new ObjectOutputStream(new FileOutputStream(file));
objOut.writeObject(user);
objOut.close();
此時,user對象就被序列化到了user.txt中
如果需要進行反序列化的操作,可以:
User user = null;
File file = new File("user.txt");
ObjectInputStream objInput = new ObjectInputStream(new FileInputStream(file));
user = (User)objInput.readObject();
objInput.close();
注意:
-
被static、transient修飾的字段不會被序列化
-
建議爲要序列化的類添加
serialVersionUID
,如果使用者沒有添加,編譯期會自動添加一個