Jaki jest cel serializacji w Java?

Serializacja w Java jest procesem konwersji obiektu na strumień bajtów, aby można było go zapisać na dysku, przesłać przez sieć lub przekazać do innego systemu. Proces ten jest niezwykle przydatny w programowaniu sieciowym oraz w sytuacjach, gdy stan obiektu musi być zapisany i odtworzony. Odwrotny proces, deserializacja, pozwala odzyskać oryginalny obiekt ze strumienia bajtów.

Przykład zastosowania serializacji

Aby zobrazować, jak działa serializacja w Java, przygotujemy przykład klasy Person, która będzie serializowalna. Obiekt tej klasy będzie zapisywany do pliku, a następnie odczytywany z tego pliku.

import java.io.*;

// Klasa reprezentująca osobę, implementująca interfejs Serializable
public class Person implements Serializable {
    private static final long serialVersionUID = 1L;

    // String opisujący imię osoby
    private String name;
    // Integer opisujący wiek osoby
    private int age;

    // Konstruktor klasy Person
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    // Metoda zwracająca dane osoby
    public String toString() {
        return "Person{name='" + name + "', age=" + age + "}";
    }
}

// Klasa główna z metodą main
public class SerializationExample {
    public static void main(String[] args) {
        Person p = new Person("Jan Kowalski", 30);
        // Ścieżka do pliku, w którym zostanie zapisany obiekt
        String filename = "person.ser";

        // Zapisywanie obiektu do pliku
        try (ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(filename))) {
            out.writeObject(p);
            System.out.println("Obiekt został zapisany");
        } catch (IOException e) {
            e.printStackTrace();
        }

        // Odczytywanie obiektu z pliku
        try (ObjectInputStream in = new ObjectInputStream(new FileInputStream(filename))) {
            Person readPerson = (Person) in.readObject();
            System.out.println("Odczytany obiekt: " + readPerson);
        } catch (IOException | ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
}

W powyższym przykładzie:

  1. Definiujemy klasę Person, która implementuje interfejs Serializable. Pozwala to na serializację obiektów tej klasy.
  2. W klasie SerializationExample znajduje się metoda main, która najpierw tworzy obiekt klasy Person, a następnie zapisuje go do pliku za pomocą ObjectOutputStream.
  3. Następnie ten sam obiekt jest odczytywany z pliku za pomocą ObjectInputStream i wyświetlany na konsoli.

Podsumowanie

Serializacja w Java umożliwia łatwe przechowywanie i transmisję obiektów. Jest to kluczowe w wielu aspektach programowania, zwłaszcza w aplikacjach rozproszonych i sieciowych. Przykład pokazuje, jak można zaimplementować i wykorzystać serializację do zapisywania i odczytywania stanu obiektów.

Jeżeli chcesz przyśpieszyć swoją naukę tworzenia stron chciałbym polecić mój kurs video Java w którym nauczysz się tego języka od podstaw do zaawansowanych jego aspektów.

Scroll to Top