48927 (Сериализация объектов), страница 3
Описание файла
Документ из архива "Сериализация объектов", который расположен в категории "". Всё это находится в предмете "информатика" из 1 семестр, которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "лабораторные работы", в предмете "информатика, программирование" в общих файлах.
Онлайн просмотр документа "48927"
Текст 3 страницы из документа "48927"
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 {
private String name;
private double salary;
private Date hireDay;
public Employee(){};
public Employee (String n, double s, int year, int month, int day) {
name = n;
salary = s;
GregorianCalendar calendar = new GregorianCalendar (year, month‑1, day);
hireDay = calendar.getTime();
}
public String getName() {
return name;
}
public double getSalary() {
return salary;
}
public Date getHireDay() {
return hireDay;
}
public void raiseSalary (double byPercent) {
double raise=salary*byPercent/100;
salary+=raise;
}
}