progs.biz  
Начало>Java>Основы>Урок 32
C#
VB.NET
Visual C++.NET
ASP.NET
Visual C++ 6
WinAPI
C/C++
Delphi
C++ Builder
Java
SQL
PHP
DirectX
Visual Basic 6.0
Ассемблер
Интернет
Сист. прогр-ние
Pocket PC
Обзор книг
Обзор программ

И. Портянкин. Swing. Эффектные пользовательские интерфейсы
И. Портянкин. Swing. Эффектные пользовательские интерфейсы
Заказать на Озоне



Яндекс-цитирования

Введение в Java
Урок 32. Сериализация класса

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

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

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

Рассылки нашего сайта на Subscribe.Ru
Visual C++, MFC
C# и .NET
VB.NET
ASP.NET new!
Win API
C/C++
Delphi
Java
HTML, PHP, mySQL, WEB-дизайн
Flash MX
C++ Builder
Ассемблер
SQL Server
DirectX
Обзор книг
Обзор программ
Новости сайта progs.biz


 
 
Копирование любых материалов сайта без разрешения авторов и владельцев сайта запрещено.
© 2002-2008 сайт progs.biz
© 2002-2008 Игорь Алексеев