Trong Java, Serialization và Deserialization là hai khái niệm quan trọng giúp chúng ta lưu trữ và truyền tải đối tượng một cách hiệu quả. Bài viết này sẽ giải thích chi tiết về hai quá trình này, cách chúng hoạt động và ứng dụng của chúng trong lập trình Java.
Serialization có nhiều ứng dụng quan trọng trong lập trình:
Để một đối tượng có thể được Serialization, lớp của nó cần phải triển khai interface Serializable
. Interface này không có phương thức nào, nhưng nó đánh dấu lớp là có khả năng Serialization.
Dưới đây là một ví dụ đơn giản về cách thực hiện Serialization:
import java.io.*; // Lớp Person implement Serializable class Person implements Serializable { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } @Override public String toString() { return "Person{name='" + name + "', age=" + age + '}'; } } public class SerializationExample { public static void main(String[] args) { Person person = new Person("John Doe", 30); // Serialization try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("person.ser"))) { oos.writeObject(person); System.out.println("Object has been serialized: " + person); } catch (IOException e) { e.printStackTrace(); } } }
transient
. Điều này có nghĩa là trường đó sẽ không được ghi lại trong quá trình Serialization.Để phục hồi đối tượng từ tệp đã được Serialization, bạn cần sử dụng ObjectInputStream
. Quá trình này sẽ đọc lại định dạng đã lưu trữ và chuyển đổi nó trở lại thành đối tượng.
Dưới đây là ví dụ về cách thực hiện Deserialization từ tệp đã được Serialization trước đó:
import java.io.*; public class DeserializationExample { public static void main(String[] args) { Person person = null; // Deserialization try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream("person.ser"))) { person = (Person) ois.readObject(); System.out.println("Object has been deserialized: " + person); } catch (IOException | ClassNotFoundException e) { e.printStackTrace(); } } }
Serialization và Deserialization là những kỹ thuật mạnh mẽ trong Java, cho phép chúng ta lưu trữ và truyền tải trạng thái của đối tượng một cách hiệu quả. Bằng cách sử dụng interface Serializable
, lập trình viên có thể dễ dàng thao tác với các đối tượng trong ứng dụng của mình, giúp cho việc lưu trữ, truyền tải và quản lý dữ liệu trở nên đơn giản và linh hoạt hơn.