Автор оригинала: 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