Автор оригинала: Pankaj Kumar.
ObjectInputStream в Java можно использовать для преобразования входного потока в объект. Процесс преобразования входного потока в объект называется десериализацией. В прошлом посте мы узнали об ObjectOutputStream и преобразовали объект java в поток вывода и записи в файл. Здесь мы прочитаем тот же сериализованный файл для создания объекта на java.
Поток ввода объекта
ObjectInputStream является частью классов ввода-вывода Java. Его цель состоит в том, чтобы предоставить нам способ преобразования входного потока в объект в программе java. Конструктор ObjectInputStream принимает InputStream в качестве аргумента. Поскольку мы читаем сериализованный объект из файла, мы будем использовать FileInputStream с нашим ObjectInputStream для чтения объекта из файла.
Пример потока ввода объектов Java
java.io.ObjectInputStream readObject() используется для считывания входного потока в объект. Мы должны выполнить приведение класса, чтобы преобразовать объект в реальный класс. Ниже приведен пример программы ObjectInputStream для чтения объекта из файла.
package com.journaldev.files;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
public class ObjectInputStreamExample {
public static void main(String[] args) {
try {
FileInputStream is = new FileInputStream("EmployeeObject.ser");
ObjectInputStream ois = new ObjectInputStream(is);
Employee emp = (Employee) ois.readObject();
ois.close();
is.close();
System.out.println(emp.toString());
} catch (ClassNotFoundException | IOException e) {
e.printStackTrace();
}
}
}
На рисунке ниже показан результат, полученный вышеуказанной программой.
В java есть гораздо больше возможностей для сериализации и десериализации. Например, что произойдет, если мы изменим класс java перед десериализацией. В чем польза serialVersionUID ? Что происходит с сериализацией с наследованием, когда суперкласс не реализует сериализуемый интерфейс? Я попытался ответить на эти вопросы в подробном посте, пожалуйста, прочитайте Сериализация в java .
Ссылка: API Doc