Kiedy serializujesz obiekt w Javie, konwertujesz dane na strumienie bajtów, które następnie konwertujesz z powrotem na kopię oryginalnych danych. Jeśli brzmi to niejasno, pomyśl o serializacji w następujący sposób. Pracujesz nad dokumentem, a następnie zapisujesz go na dysku twardym. Mówiąc w ten sposób, serializujesz dane, aby móc później odzyskać tę kopię. Serializacja znacznie ułatwia i usprawnia przesyłanie danych w sieciach.
Ważne jest, aby zrozumieć podstawy języka Java przed serializacją obiektu. Jeśli używałeś języków programowania, takich jak Pascal i starsze wersje C, wiesz, że bez serializacji obiektów programista musi utworzyć oddzielny plik tekstowy I/O do przechowywania i ładowania danych. Serializacja obiektów w Javie omija tworzenie tego pliku tekstowego do przechowywania danych, oszczędzając czas i koszty programowania. Poniższy artykuł zawiera kroki umożliwiające serializację obiektu w języku Java. Przykładowy kod w tym artykule został wykorzystany dzięki uprzejmości The Java Developers Almanac 1.4.
Kroki
Krok 1. Otwórz obiekt kodujący Java, który wymaga serializacji lub utwórz go od podstaw
Krok 2. Wybierz obiekt w Javie, który chcesz serializować
W tym przykładzie nazwiemy ten obiekt „MyObject”.
Krok 3. Włącz serializację obiektów w Javie, tworząc klasę MyObject w celu zaimplementowania interfejsu java.io. Serialize
Wystarczy dodać następującą linię kodu na początku kodu, zastępując "public class MyObject" line.public class MyObject implementuje java.io. Serializable
Krok 4. Teraz twój obiekt jest możliwy do serializacji, co oznacza, że może być zapisany przez strumień wyjściowy, w następujący sposób:
-
Poniższe wiersze kodu ilustrują sposób zapisywania MyObject (lub dowolnego obiektu możliwego do serializacji) do pliku lub dysku.
próbować{
// Serializuj obiekt danych do pliku
ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("MyObject.ser"));
out.writeObject(obiekt);
out.zamknij();
// Serializuj obiekt danych do tablicy bajtów
ByteArrayOutputStream bos = new ByteArrayOutputStream();
out = new ObjectOutputStream(bos);
out.writeObject(obiekt);
out.zamknij();
// Pobierz bajty zserializowanego obiektu
bajt buf = bos.toByteArray();
} złapać (IOException e) {
}
Krok 5. Można to przeczytać tak:
-
try{ FileInputStream door = new FileInputStream("nazwa_pliku.sav"); Czytnik ObjectInputStream = nowy ObjectInputStream(drzwi); MójObiekt x = nowy MójObiekt(); x = (MyObject) reader.nextObject();}catch (IOException e){ e.printStackTrace();}
Krok 6. Wykonaj zserializowany kod obiektowy w programie Java, aby upewnić się, że działa skutecznie (opcjonalnie)
Krok 7. Zapisz i zamknij zserializowany obiekt w Javie
Porady
- Udoskonalenia serializacji w Java SE Development Kit 6 umożliwiają użycie ObjectStreamClass wyszukiwania dowolnej metody do obsługi dowolnych obiektów klas, których nie można serializować.
- Aby skrócić czas odczytu i zapisu w dużych drzewach obiektów, użyj słowa kluczowego „przejściowy” dla zmiennych instancji, które nie wymagają serializacji. Zwiększy to wydajność, ponieważ nie odczytujesz i nie zapisujesz już niepotrzebnych danych w procesie serializacji.
Ostrzeżenia
- Java prawie co roku wychodzi z nową wersją swojego zestawu deweloperskiego. Nowe wersje obejmują uaktualnienia i zmiany sposobu serializacji obiektu w Javie. Dlatego ważne jest, aby monitorować zmiany w używanej wersji.
- Podczas serializacji obiektów nie można szyfrować strumieni danych. Dlatego w razie potrzeby będziesz musiał polegać na innych aplikacjach lub pomocniczych procesach transportu sieciowego, aby chronić dane.
- Obecnie nie ma opcji umożliwiającej zapisywanie obiektów do pliku o dostępie swobodnym. Zamiast tego można wykorzystać wejściowe strumienie wyjściowe tablicy bajtowej jako symbol zastępczy, z którego można odczytywać i zapisywać obiekty. Należy jednak upewnić się, że cały obiekt znajduje się w strumieniu tablicy bajtów, w przeciwnym razie proces się nie powiedzie.