![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
Для того, чтобы экземпляр класса можно было сохранять (например в файл) и потом восстанавливать (например, из файла), класс должен быть сериализуемым. В этом случае сохранение / чтение экземпляра класса будет происходить не поэлементно (что тоже возможно), а целиком.
Вообще же говоря, сериализация - это представление некого объекта в последовательной форме, а десериализация - это восстановление объекта из последовательной формы.
Для того, чтобы класс стал сериализуемым, его надо просто объявить потомком интерфейса Serializable. Методов в этом интерфейсе нет.
Вот сразу пример сериализуемого класса:
import java.io.*;
public class Worker implements Serializable {
// Данные класса.
int age=0;
int yoe=0;
Worker(int age, int yoe){
this.age = age;
this.yoe = yoe;
}
// Метод main.
public static void main(String[] args)
throws IOException, ClassNotFoundException {
// Сериализация экземпляра класса.
Worker w = new Worker(22, 2);
ObjectOutputStream os = new ObjectOutputStream(
new FileOutputStream("1.txt"));
os.writeObject(w);
os.close();
// Десериализация экземпляра класса.
Worker w1 = new Worker(0, 0);
ObjectInputStream ois = new ObjectInputStream(
new FileInputStream("1.txt"));
w1 = (Worker)ois.readObject();
ois.close();
System.out.println("age = " + w1.age + ", yoe = " + w1.yoe);
}
}
Статический метод main, по идее, должен был бы быть в отдельном классе. Мы поместили его в этот же класс для упрощения. В этом методе мы сериализуем в файл 1.txt экземпляр нашего класса (со значениями полей 22 и 2) и потом десериализуем данные из этого файла в другой экземпляр этого же класса Worker. Результат будет вполне ожидаемым - значения полей в новом экземпляре класса будут такие же - 22 и 2.
Дата публикования: 2014-11-04; Прочитано: 388 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!