Сериализация объектов — это процесс преобразования состояния объекта в байтовый поток, который затем можно сохранить в файл или отправить по сети. Это может быть полезно, когда необходимо «запомнить» состояние объекта для последующего восстановления.
Давайте представим, что у нас есть объект «Книга», который хранит информацию о названии, авторе и количестве страниц. Этот объект был создан и инициализирован во время выполнения программы. Но теперь нам нужно сохранить эту информацию и восстановить её при следующем запуске программы. Именно для этого используется сериализация.
class Book implements java.io.Serializable {
String title;
String author;
int pageCount;
public Book(String title, String author, int pageCount) {
this.title = title;
this.author = author;
this.pageCount = pageCount;
}
}
Чтобы объект был сериализуемым, его класс должен реализовывать интерфейс java.io.Serializable
. Этот интерфейс не имеет методов, он служит только маркером, указывающим JVM, что объекты этого класса могут быть сериализованы.
Сериализация объекта происходит следующим образом:
FileOutputStream fileOut = new FileOutputStream("book.ser");
ObjectOutputStream out = new ObjectOutputStream(fileOut);
out.writeObject(myBook);
out.close();
fileOut.close();
Здесь myBook
— это объект, который мы хотим сериализовать. В результате в файле book.ser
будет сохранено состояние объекта myBook
.
Десериализация — это процесс восстановления состояния объекта из байтового потока. Он происходит так:
FileInputStream fileIn = new FileInputStream("book.ser");
ObjectInputStream in = new ObjectInputStream(fileIn);
Book myBook = (Book) in.readObject();
in.close();
fileIn.close();
Теперь мы получили объект myBook
с теми же значениями полей, которые были у него до сериализации.
Таким образом, сериализация объектов позволяет сохранять и восстанавливать состояние объектов, что может быть очень полезно во многих ситуациях.
Добавить комментарий