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

Десериализация происходит так же просто, как и сериализация:

ObjectlnputStream ois = new ObjectInputStream (

new FilelnputStream («myobjects.ser»));

MyClass mcl = (MyClass) ois.readObject();

int[] a = (int[]) ois.readObject();

String s = (String) ois.readObject();

Date d = (Date) ois.readObject();

Приложение 6. Клонирование при помощи сериализации

Под клонированием объекта подразумевают получение его точной копии, независимой от оригинала. Таким образом, изменение параметров объекта-клона не влияет на оригинал, верно и обратное: изменение оригинала не влияет на клон.

Сериализация – один из методов для клонирования объектов. Суть его состоит в следующем: записать исходный объект в поток вывода, а затем считать обратно. В результате получается совершенно новый объект, по свойствам идентичный оригиналу.

Необходимо понимать, что данный способ не является оптимальным в силу следующих причин:

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

– клонирование сериализацией работает несколько медленнее обчного метода клонирования.

Впрочем, в случаях когда скорость написания кода становится важнее оптимизации скорости выполнения, этот метод оказывается как нельзя кстати.

Для реализации метода рекомендуется использовать следующую схему.

– Создаётся класс SerialCloneable, имплементирующий интерфейсы Cloneable и Serializable.

– Класс SerialCloneable имеет единственный метод clone(), в котором происходит сериализация объекта. Метод clone() возвращает объект из входного потока.

– Класс, который должен содержать поддержку клонирования, наследуется от класса SerialCloneable.

Приложение 7. Пример кода классов Employee и Manager

public class Manager extends Employee {

private Employee secretary;

public Manager (String n, double s, int year, int month, int day) {

super (n, s, year, month, day);

secretary = null;

}

public void setSecretary (Employee s) {

secretary = s;

}

}

public class Employee implements Serializable {

К-во Просмотров: 405
Бесплатно скачать Лабораторная работа: Сериализация объектов