Лекция: Сериализация класса

 

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

 

Вообще же говоря, сериализация — это представление некого объекта в последовательной форме, а десериализация — это восстановление объекта из последовательной формы.

 

Для того, чтобы класс стал сериализуемым, его надо просто объявить потомком интерфейса 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.

 

еще рефераты
Еще работы по информатике