Java序列化與反序列化的原理主要基于Java對象流(Object Stream)機制。以下是詳細的解釋:
定義:
關鍵步驟:
java.io.Serializable
接口。這是一個標記接口,沒有任何方法需要實現。ObjectOutputStream
對象,它負責將對象寫入輸出流(如文件、網絡連接等)。writeObject(Object obj)
方法將對象序列化。序列化過程:
transient
的字段不會被序列化。示例代碼:
import java.io.*;
public class Person implements Serializable {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
public class SerializationExample {
public static void main(String[] args) {
Person person = new Person("John", 30);
try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("person.ser"))) {
oos.writeObject(person);
} catch (IOException e) {
e.printStackTrace();
}
}
}
定義:
關鍵步驟:
ObjectInputStream
:
ObjectInputStream
對象,它負責從輸入流(如文件、網絡連接等)讀取對象數據。readObject()
方法讀取并反序列化對象。反序列化過程:
transient
的字段在反序列化后會被賦予默認值(如數值類型為0,引用類型為null)。示例代碼:
import java.io.*;
public class DeserializationExample {
public static void main(String[] args) {
try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream("person.ser"))) {
Person person = (Person) ois.readObject();
System.out.println("Name: " + person.getName());
System.out.println("Age: " + person.getAge());
} catch (IOException | ClassNotFoundException e) {
e.printStackTrace();
}
}
}
InvalidClassException
。通過以上步驟和注意事項,可以有效地實現Java對象的序列化和反序列化。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。