欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

java的序列化和反序

吳曉飛1年前5瀏覽0評論

Java中的對象序列化是一種將對象轉換為字節流的過程,用于將對象在網絡上傳輸或保存到磁盤上。在Java中,通過實現Serializable接口來完成對象序列化,例如:

public class Student implements Serializable {
private int id;
private String name;
private int age;
// 省略構造方法和getter/setter方法
public String toString() {
return "Student{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
'}';
}
}

將對象序列化后可以使用反序列化將對象重新還原出來,并存儲到文件或者數據庫中。反序列化需要使用ObjectInputStream類,例如:

import java.io.*;
public class SerializationTest {
public static void main(String[] args) {
Student student = new Student(1, "Tom", 18);
try {
// 將student對象序列化
ObjectOutputStream output = new ObjectOutputStream(new FileOutputStream("student.obj"));
output.writeObject(student);
output.close();
} catch (IOException e) {
e.printStackTrace();
}
try {
// 將student對象反序列化
ObjectInputStream input = new ObjectInputStream(new FileInputStream("student.obj"));
Student student1 = (Student) input.readObject();
input.close();
System.out.println(student1);
} catch (IOException | ClassNotFoundException e) {
e.printStackTrace();
}
}
}

上述代碼實現了對Student對象的序列化和反序列化,輸出結果為:

Student{id=1, name='Tom', age=18}

需要注意的是,當一個類實現了Serializable接口后,其所有成員變量都應該是可序列化的,如果有些成員變量無法序列化,可以使用transient關鍵字標記它們,例如:

public class Student implements Serializable {
private int id;
private String name;
private transient int age; // age不參與序列化
// 省略構造方法和getter/setter方法
public String toString() {
return "Student{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
'}';
}
}

以上就是Java中對象序列化和反序列化的相關知識,序列化可以將對象方便地進行網絡傳輸和持久化存儲,反序列化可以將序列化后的字節流還原為對象。