Когда вы сериализуете объект в Java, вы конвертируете данные в байтовые потоки, которые затем конвертируются обратно в копию исходных данных. Если это звучит сбивающе с толку, подумайте о сериализации в следующих терминах. Вы работаете с документом, а затем сохраняете его на жесткий диск. Вы, так сказать, сериализуете данные, чтобы впоследствии можно было получить эту копию. Сериализация делает передачу данных по сети намного проще и эффективнее.
Перед сериализацией объекта важно понимать основы Java. Если вы использовали языки программирования, такие как Pascal и более старые версии C, вы знаете, что без сериализации объектов программист должен создать отдельный текстовый файл ввода-вывода для хранения и загрузки данных. Сериализация объектов в Java позволяет обойтись без создания этого текстового файла для хранения данных, что экономит время и затраты на программирование. Следующая статья содержит шаги по сериализации объекта в Java. Образец кода в этой статье любезно предоставлен The Java Developers Almanac 1.4.
Шаги
Шаг 1. Откройте объект кодирования Java, который требует сериализации, или создайте его с нуля
Шаг 2. Выберите объект в Java, который вы хотите сериализовать
В этом примере мы назовем этот объект «MyObject».
Шаг 3. Включите сериализацию объектов в Java, заставив класс MyObject реализовать интерфейс java.io. Serialize
Просто добавьте следующую строку кода в начало кода, заменив строку «публичный класс MyObject». Открытый класс MyObject реализует java.io. Serializable
Шаг 4. Теперь ваш объект сериализуем, это означает, что он может быть записан потоком вывода, например:
-
Следующие строки кода показывают, как записать MyObject (или любой сериализуемый объект) в файл или на диск.
пытаться{
// Сериализуем объект данных в файл
ObjectOutputStream out = новый ObjectOutputStream (новый FileOutputStream ("MyObject.ser"));
out.writeObject (объект);
out.close ();
// Сериализуем объект данных в байтовый массив
ByteArrayOutputStream bos = новый ByteArrayOutputStream ();
out = новый ObjectOutputStream (bos);
out.writeObject (объект);
out.close ();
// Получаем байты сериализованного объекта
byte buf = bos.toByteArray ();
} catch (IOException e) {
}
Шаг 5. Это можно прочитать так:
-
попробуйте {FileInputStream door = new FileInputStream ("name_of_file.sav"); Считыватель ObjectInputStream = новый ObjectInputStream (дверь); MyObject x = новый MyObject (); x = (MyObject) reader.nextObject ();} catch (IOException e) {e.printStackTrace ();}
Шаг 6. Выполните сериализованный объектный код в программе Java, чтобы убедиться, что он работает эффективно (необязательно)
Шаг 7. Сохраните и закройте сериализованный объект в Java
подсказки
- Усовершенствования сериализации в Java SE Development Kit 6 позволяют использовать ObjectStreamClass для поиска любого метода для обработки любых несериализуемых объектов класса.
- Чтобы сократить время чтения и записи в больших деревьях объектов, используйте ключевое слово «transient» для переменных экземпляра, которые не требуют сериализации. Это повысит производительность, поскольку вы больше не будете читать и записывать ненужные данные в процессе сериализации.
Предупреждения
- Java выпускает новую версию своего комплекта разработчика почти ежегодно. Новые версии включают обновления и изменения того, как вы можете сериализовать объект в Java. Поэтому важно отслеживать изменения в используемой вами версии.
- При сериализации объектов нельзя зашифровать потоки данных. Следовательно, вам придется полагаться на другие приложения или вторичные процессы сетевого транспорта для защиты данных, если это необходимо.
- В настоящее время нет опции, позволяющей записывать объекты в файл с произвольным доступом. Вместо этого вы можете использовать потоки ввода-вывода байтового массива в качестве заполнителя для чтения и записи объектов. Однако убедитесь, что весь объект находится в потоке байтового массива, иначе процесс завершится ошибкой.