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?
- Definicja klasy
Car
: KlasaCar
implementuje interfejsSerializable
, co umożliwia jej serializację. Zawiera także unikalny identyfikatorserialVersionUID
, który jest zalecany do zapewnienia kompatybilności wersji. - Tworzenie i serializacja obiektu: Tworzymy obiekt
Car
, a następnie używamyObjectOutputStream
do zapisania obiektu do pliku. - 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.