88. Serialization trong lập trình Java

Serialization là một cơ chế trong lập trình Java cho phép bạn chuyển đổi đối tượng Java thành một dạng dữ liệu byte có thể được lưu trữ hoặc truyền qua mạng và sau đó chuyển đổi lại thành đối tượng gốc. Quá trình chuyển đổi này gọi là Serialization và Deserialization.

Khi một đối tượng được “serialize”, nó sẽ được mã hóa thành dạng dữ liệu byte để lưu trữ hoặc truyền đi. Đối tượng sau khi được serialize có thể được lưu vào tệp (file) hoặc truyền qua mạng.

Khi cần sử dụng lại đối tượng từ dạng dữ liệu byte, quá trình ngược lại được thực hiện, gọi là “deserialize”. Quá trình này cho phép bạn tái tạo đối tượng gốc từ dữ liệu byte đã serialize.

Để thực hiện Serialization và Deserialization trong Java, lớp cần được đánh dấu là Serializable bằng cách triển khai giao diện java.io.Serializable. Điều này cho phép JVM biết rằng các đối tượng của lớp có thể được serialize.

Dưới đây là một ví dụ về cách sử dụng Java Serialization:

java
import java.io.*;

public class SerializationExample {
    public static void main(String[] args) {
        // Serialize đối tượng
        try {
            // Tạo một đối tượng để serialize
            Student student = new Student("John", 25);

            // Mở luồng ghi dữ liệu vào tệp student.ser
            FileOutputStream fileOut = new FileOutputStream("student.ser");
            ObjectOutputStream out = new ObjectOutputStream(fileOut);

            // Serialize đối tượng
            out.writeObject(student);

            // Đóng luồng
            out.close();
            fileOut.close();

            System.out.println("Đối tượng đã được serialize thành công.");
        } catch (IOException e) {
            e.printStackTrace();
        }

        // Deserialize đối tượng
        try {
            // Mở luồng đọc dữ liệu từ tệp student.ser
            FileInputStream fileIn = new FileInputStream("student.ser");
            ObjectInputStream in = new ObjectInputStream(fileIn);

            // Deserialize đối tượng
            Student student = (Student) in.readObject();

            // Đóng luồng
            in.close();
            fileIn.close();

            // In thông tin đối tượng đã được deserialize
            System.out.println("Tên: " + student.getName());
            System.out.println("Tuổi: " + student.getAge());
        } catch (IOException | ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
}

class Student implements Serializable {
    private String name;
    private int age;

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }
}

Trong ví dụ trên, chúng ta đã tạo một lớp Student triển khai Serializable và sử dụng Java Serialization để serialize và deserialize một đối tượng Student.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top