Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

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



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

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

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



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.009 с)...