Java SE. Урок 32. Сериализация | Десериализация Объектов

preview_player
Показать описание
Сериализация - это процесс преобразования объектов в потоки байтов для хранения.

Десериализация - процесс извлечение объекта из потока байтов.

Для сериализации объекта, его класс должен реализовывать либо интерфейс Serializable либо Externalizable. Поля класса также должны реализовывать данные интерфейсы, если они являются объектами. Интерфейс Serializable является интерфейсом-маркером-меткой, и не требует реализации каких либо методов. В случае с интерфейсом Externalizable необходимо будет переопределить методы readObject/writeObject

Значения полей помеченные спецификаторами transient и static не сериализуются (не сохраняются). Единственным исключением является поле:
private static final long serialVersionUID которое сериализуется вместе с объектом. Оно вычисляется по содержимому класса либо устанавливается программистом самостоятельно. После сериализации объекта стоит знать, что изменив содержимое класса объект восстановить не получиться.

При десериализации поля помеченные transient восстанавливаются по умолчанию. Если это ссылочные типы - то null.

При десериализации поля помеченные static восстанавливаются по умолчанию в случае отсутствия в области видимости объектов данного класса. В противном случае - принимают значения актуальные в данный момент.

Для записи объекта используется метод writeObject класса ObjectOutputStream, для чтения соответственно readObject класса ObjectInputStream.
Рекомендации по теме
Комментарии
Автор

Было бы здорово, почитать в описании или в конце послушать, маленький пример жизненный, где бы это пригодилось. Спасибо вам!

nikolayreznik
Автор

Не пойму почему у вас такое маленькое количество просмотр, хотя канал ОЧЕНЬ хороший, споcибо вам большое за вашу работу

zoongnguyen
Автор

Александр, молодец! Все очень доступно объясняешь)

renat
Автор

еее!!! как я люблю это вступление!!! спасибо, продолжаю изучать Java !!! спасибо !!!

tokepala
Автор

Ты реальный мужик! Спасибо за твои уроки.

atlasua
Автор

Ставь лайк если ты против сериализации животных

kirilmorhunov
Автор

Довольно таки не плохой канал, продолжай в том же духе . Есть конечно не понятные нюансы, но в общем всё предельно ясно.

АнтонМакаров-рй
Автор

Module 'javaprograam' production: java.lang.ClassCastException: cannot be cast to
что это за ошибка? у меня не получилось

alexandrkomar
Автор

Это круто. Но как быть, если нужно сереализовать несколько объектов?

ГлебВалерьевич-уы
Автор

Вечер добрый! Спасибо Вам за новый урок! Александр, не подскажите, по какому принципу происходит десериализация, т.к. в случае сериализации объекта с дальнейшим изменением названия поля прямо в файле, десериализация выбрасывает исключение. То есть информация об объекте в файле как-то связана с классом в jvm, но как компилятор может знать длину подстроки-поля, которую необходимо десериализовать?

andriybondarenko
Автор

oos ненужно проверять на null, просто сначала flush() а потом close()

romamvp
Автор

Не исключено что я тупой, но в этом уроке прям вообще суть не понятна: что такое сериализация вообще. Даже записать как то нечего... Наверное пока здесь водятся драконы и мне здесь делать нечего))))

ЕвгенийСиницын-их
Автор

Добрый день. Выложите пожалуйста код всех ваших занятий в облако чтоб можно было их скачать.

alexcrafter
Автор

Спрошу что бы проверить правильно ли я понимаю и не упустил ли чего .
ваш код:
File file = new File("D:/cat.data");
ObjectOutputStream oos = null;

try {
FileOutputStream fos = new FileOutputStream(file);
if (fos!=null){
oos = new ObjectOutputStream(fos);
oos.writeObject(cat);
flag = true;
}
}catch (FileNotFoundException e) {
e.printStackTrace();
}catch (IOException e) {
e.printStackTrace();
}

Евгений-чкф
Автор

Мне кажется, что если ты назвал класс Serializator то логично, что он должен работать не только для класса Cat. Я в его методах принимал и возвращал класс типа Object, а уже потом приводил к Cat.

ХединДобрый
Автор

Очень редкое сочетания понимания материала по it и дикторского искусства, без "ээ", "нуу" и т.д.

pavelkalinin
Автор

примитивнее некуда. этой информации не достаточно чтобы применять сериализацию, если ваш объект это не кот с одним полем. сразу возникнет миллион вопросов и проблем

javahalva
Автор

Сериализовать кота.. Не надо так с котиком!

PigManPig