Сериализация объектов
Сериализация представляет процесс записи состояния объекта в поток, соответственно процесс извлечения или восстановления состояния объекта из потока называется десериализацией. Сериализация очень удобна, когда идет работа со сложными объектами.
Интерфейс Serializable
Сразу надо сказать, что сериализовать можно только те объекты, которые реализуют интерфейс Serializable. Этот интерфейс не определяет никаких методов, просто он служит указателем системе, что объект, реализующий его, может быть сериализован.
Сериализация. Класс ObjectOutputStream
Для сериализации объектов в поток используется класс ObjectOutputStream. Он записывает данные в поток.
Для создания объекта ObjectOutputStream в конструктор передается поток, в который производится запись:
ObjectOutputStream(OutputStream out)
Для записи данных ObjectOutputStream использует ряд методов, среди которых можно выделить следующие:
· void close(): закрывает поток
· void flush(): очищает буфер и сбрасывает его содержимое в выходной поток
· void write(byte[] buf): записывает в поток массив байтов
· void write(int val): записывает в поток один младший байт из val
· void writeBoolean(boolean val): записывает в поток значение boolean
· void writeByte(int val): записывает в поток один младший байт из val
· void writeChar(int val): записывает в поток значение типа char, представленное целочисленным значением
· void writeDouble(double val): записывает в поток значение типа double
· void writeFloat(float val): записывает в поток значение типа float
· void writeInt(int val): записывает целочисленное значение int
· void writeLong(long val): записывает значение типа long
· void writeShort(int val): записывает значение типа short
· void writeUTF(String str): записывает в поток строку в кодировке UTF-8
· void writeObject(Object obj): записывает в поток отдельный объект
Эти методы охватывают весь спектр данных, которые можно сериализовать.
Например, сохраним в файл один объект класса Person:
import java.io.*;
public class FilesApp {
public static void main(String[] args) {
try(ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("person.dat")))
{
Person p = new Person("Джон", 33, 178, true);
oos.writeObject(p);
}
catch(Exception ex){
System.out.println(ex.getMessage());
}
}
}
class Person implements Serializable{
public String name;
public int age;
public double height;
public boolean married;
Person(String n, int a, double h, boolean m){
name=n;
age=a;
height=h;
married=m;
}
}
Дата добавления: 2017-01-26; просмотров: 1262;