Программирование на JAVA
Меню :
Стартовая
Основы программирования
Программирование на JAVA
Программирование на C++
Программирование на Pascal
Задачи по программированию
in = new ByteArraylnputStream(bytes);
inData = new DatalnputStream(in);
System.out.println("readlnt: " + inData.readlnt());
System.out.printlnf'readDouble: " + inData.readDouble());
System.out.println("readLong: " + inData.readLong());
inData.close();
} catch (Exception e) {
System.out.printlnf'lmpossible lOException occurs: " + e.toStringO); e.printStackTrace();
}
Результат выполнения профаммы: Чтение в правильной последовательности:
read Byte: -128 readlnt: 128 readLong: 128 readDouble: 128.0
Чтение в измененной последовательности:
readlnt: -2147483648 readDouble: -0.0
readLong:-9205252085229027328
Итак, значение любого примитивного типа может быть передано и считано из потока данных.
Сериализация объектов (serialization)
Для объектов процесс преобразования в последовательность байт и обратно организован несколько сложнее - объекты имеют различную структуру, хранят ссылки на другие объекты и т.д. Поэтому такая процедура получила специальное название - сериализация (serialization), обратное действие, — то есть воссоздание объекта из последовательности байт — де-сериализация.
Поскольку сериализованный объект - это последовательность байт, которую можно легко сохранить в файл, передать по сети и т.д., то и объект затем можно восстановить на любой машине, вне зависимости от того, где проводилась сериализация. Разумеется, Java позволяет не задумываться при этом о таких факторах, как, например, используемая операционная система на машине-отправителе и получателе. Такая гибкость обусловила широкое применение сериализации при создании распределенных приложений, в том числе и корпоративных (enterprise) систем.
Стандартная сериализация
Для представления объектов в виде последовательности байт определены унаследованные от Datalnput и DataOutput интерфейсы Objectlnput и ObjectOutput, соответственно. В java.io имеются реализации этих интерфейсов — классы ObjectlnputStream и ObjectOutputStream.
Эти классы используют стандартный механизм сериализации, который предлагает JVM. Для того, чтобы объект мог быть сериализован, класс, от которого он порожден, должен реализовывать интерфейс java.io.Serializable. В этом интерфейсе не определен ни один метод. Он нужен лишь для указания, что объекты класса могут участвовать в сериализации