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:
- Definiujemy klasę
Person
, która implementuje interfejsSerializable
. Pozwala to na serializację obiektów tej klasy. - W klasie
SerializationExample
znajduje się metodamain
, która najpierw tworzy obiekt klasyPerson
, a następnie zapisuje go do pliku za pomocąObjectOutputStream
. - 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.