Вопрос 51 Понятие сериализации. Порядок сериализации и десериализации, их особенности. 40, 45-48. Лекция Механизмы ввода-вывода информации. Понятие сериализации.
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

Сериализация объектов

n Сериализация – преобразование состояния объекта в поток байтов

n Десериализация – восстановление состояния объекта из данных потока

n Не все объекты могут быть сериализованы

n Класс должен быть подготовлен к сериализации

 

Порядок сериализации и десериализации

n В нисходящем порядке по древовидной иерархии типов: от первого сериализуемого класса до частного типа

n Объекты, на которые ссылаются поля, сериализуются в порядке обнаружения

n Перед десериализацией выполняется загрузка участвующих классов (возможен выброс исключения ClassNotFoundException)

 

Пример иерархии классов

class Class1 extends Object {

private int state1 = 1;

}

class Class2 extends Class1 implements java.io.Serializable {

protected int state21;

private int state22;

public Class2(int s1, int s2) {

state21 = s1 + 15;

state22 = s2 - 1;

}

}

class Class3 extends Class2 {

public int state3 = 3;

}

 

Порядок сериализации

 

Порядок десериализации

 

 

 

Вопрос 52 Понятие сериализации. Подготовка классов к сериализации. Принципы настройки сериализации.40, 44, 49-50 Лекция Механизмы ввода-вывода информации. Понятие сериализации.

 

Сериализация объектов

n Сериализация – преобразование состояния объекта в поток байтов

n Десериализация – восстановление состояния объекта из данных потока

n Не все объекты могут быть сериализованы

n Класс должен быть подготовлен к сериализации

 

Подготовка классов к сериализации

n Должен реализовываться интерфейс-маркер java . io . Serializable

n Все сериализуемые поля должны иметь сериализуемый тип

n Родительский класс должен иметь конструктор по умолчанию (без параметров) или быть подготовленным к сериализации

n Сериализуются поля объекта, не обозначенные как transient или static

 

Настройка сериализации

n Для изменения работы механизма сериализации на уровне вашего класса в самом классе надо описать методы:

l реализация сериализации
private void writeObject(ObjectOutputStream out) throws IOException

l реализация десериализации
private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException

n Уровень доступа методов позволяет им независимо существовать в различных классах в иерархии наследования

n Можно не переписывать чтение/запись полностью, а лишь изменить порядок записи полей и их формат (см. методы ObjectOutputStream . writeFields () и ObjectInputStream . readFields ())



Контроль версий

n Каждый класс имеет уникальный идентификатор номера версии – 64 битовое значение long

n По умолчанию значение рассчитывается как функция от кода класса (включая методы)

n Несовпадение версий при десериализации объекта выбрасывает исключение InvalidClassException

n Проблему можно обойти, явно введя в класс поле
private static final long
serialVersionUID = ...;

Вопрос 53 Понятие сериализации. Интерфейс Externalizable. 40, 51. Лекция Механизмы ввода-вывода информации. Понятие сериализации.

 



Сериализация объектов

n Сериализация – преобразование состояния объекта в поток байтов

n Десериализация – восстановление состояния объекта из данных потока

n Не все объекты могут быть
сериализованы

n Класс должен быть
подготовлен к сериализации

 



Интерфейс Externalizable

n Ручная» сериализация:

l реализация сериализации
public void writeExternal(ObjectOutputStream out) throws IOException

l реализация десериализации
private void readExternal(ObjectInputStream in) throws IOException, ClassNotFoundException

n Требует наличия конструктора по умолчанию у класса.

JVM сначала вызывает конструктор без параметров, и только

потом на уже созданном объекте вызывает метод readExternal

n Выигрыш в производительности при грамотной реализации

n Нарушение целостности графа

 

Вопрос 54 Структура пакета java.lang. Тип Object, его особенности и методы. Класс Class. 2-4, 12 Лекция Базовые и утилитные классы API JAVA

 



Пакет java . lang

n Базовые классы

l Object

l Class

l Обертки примитивных типов

l Math

l Классы работы со строками

l Классы управления процессами и потоками

l Средства рефлексии

l И т.д.

n Базовые интерфейсы

l Cloneable

l Comparable

l Runnable

l И т.д.

n Основные исключения

l Exception

l Error

l RuntimeException

l SecutityException

l И т.д.

n Этот пакет импортируется по умолчанию

 

Класс Object

n Является суперклассом для всех классов (включая массивы)

n Переменная этого типа может ссылаться на любой объект (но не на переменную примитивного типа)

n Его методы наследуются всеми классами

n Реализует базовые операции с объектами

 

Методы класса Object

n Получение строкового представления объекта
String toString()

n Получение ссылки на описание класса объекта
final Class getClass()

n Клонирование объекта (получение копии)
protected Object clone()

n Проверка равенства объектов
boolean equals( Object obj)

n Получение хэш-кода объекта
int hashCode()

n Метод завершения работы с объектом
protected v oid finalize()

n Методы обслуживания блокировок в многопоточных приложениях
void wait (...), void notify (), void notifyAll ()

 








Класс Class

n Является метаклассом для всех классов Java

n Экземпляры содержат описания классов, загружаемых JVM

n Не имеет доступного конструктора

n Содержит методы для работы с классами и их методами

n Лежит в основе т.н. «рефлексии»

 

 

Вопрос 55 Клонирование объектов 5-8 Лекция Базовые и утилитные классы API JAVA

 

Клонирование объектов

n Считается, что результатом клонирования является копия объекта

int[] arrayCopy = (int []) array.clone();

n Массивы поддерживают операцию клонирования

n В классе Object метод clone () является защищенным

n Метод clone () реализуется в конкретном классе

n Никто не гарантирует того, что результатом его выполнения будет копия объекта, и даже того, что новый объект будет того же класса

n Однако существует ряд соглашений,  регламентирующих реализацию  метода clone ()

 

Дата: 2019-07-30, просмотров: 263.