Co dzieje się ze stanem obiektu, gdy jest serializowany w Java?

Serializacja w Javie to proces przekształcania stanu obiektu na strumień bajtów, aby móc go zapisywać na dysk lub przesyłać przez sieć. Proces ten jest niezwykle przydatny w aplikacjach wymagających trwałości danych, komunikacji między aplikacjami lub przesyłania obiektów między różnymi komponentami systemu.

Przykład serializacji obiektu w Java

Przyjrzymy się teraz kompletnemu przykładowi kodu, który pokazuje, jak można serializować i deserializować obiekty w Javie. Przykład będzie zawierał komentarze po polsku, zgodnie z wytycznymi.

import java.io.*;

// Klasa Car, która implementuje interfejs Serializable
public class Car implements Serializable {
    private static final long serialVersionUID = 6529685098267757690L;

    // String opisujący markę samochodu
    private String brand;
    // int opisujący rok produkcji
    private int year;

    // Konstruktor klasy Car
    public Car(String brand, int year) {
        this.brand = brand;
        this.year = year;
    }

    // Metoda main, która demonstruje serializację i deserializację
    public static void main(String[] args) {
        // Tworzenie obiektu Car
        Car car = new Car("Ford", 2020);

        // Ścieżka, gdzie zostanie zapisany serializowany obiekt
        String path = "car.ser";

        // Serializacja obiektu
        try (ObjectOutputStream oos = new ObjectOutputStream(
                 new FileOutputStream(path))) {
            oos.writeObject(car);
            System.out.println("Obiekt został zserializowany");
        } catch (IOException e) {
            e.printStackTrace();
        }

        // Deserializacja obiektu
        try (ObjectInputStream ois = new ObjectInputStream(
                 new FileInputStream(path))) {
            Car loadedCar = (Car) ois.readObject();
            System.out.println("Obiekt został odczytany");
            System.out.println("Marka: " + loadedCar.brand + ", Rok: " + loadedCar.year);
        } catch (IOException | ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
}

Jak działa kod?

  1. Definicja klasy Car: Klasa Car implementuje interfejs Serializable, co umożliwia jej serializację. Zawiera także unikalny identyfikator serialVersionUID, który jest zalecany do zapewnienia kompatybilności wersji.
  2. Tworzenie i serializacja obiektu: Tworzymy obiekt Car, a następnie używamy ObjectOutputStream do zapisania obiektu do pliku.
  3. Deserializacja obiektu: Używamy ObjectInputStream do odczytania obiektu z pliku. Proces ten przywraca stan obiektu, który został zapisany podczas serializacji.

Podsumowanie

Serializacja w Javie umożliwia łatwe przechowywanie i przesyłanie stanu obiektów. W naszym przykładzie zastosowano prosty obiekt Car, który został zapisany do pliku, a następnie odczytany, pokazując jak zachowuje się stan obiektu podczas tego procesu. Dzięki serializacji, stan obiektów może być łatwo zapisywany i przywracany, co jest kluczowe w wielu aplikacjach

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