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中對象序列化和反序列化的相關知識,序列化可以將對象方便地進行網絡傳輸和持久化存儲,反序列化可以將序列化后的字節流還原為對象。
上一篇CSS代碼壁紙簡約手機
下一篇css代碼怎么弄