Сериализация фактически реализована в java.io.ObjectOutputStream
(и java.io.ObjectInputStream) и некоторых его вспомогательных классах. Во многих случаях этой встроенной поддержки достаточно, и разработчику просто необходимо реализовать интерфейс маркера Serializable
. Этот интерфейс называется «маркером», потому что он не объявляет какие-либо методы и, следовательно, не требует какого-либо специального API для классов реализации.
Программист может добавить или заменить механизм сериализации по умолчанию своими собственными методами, если это необходимо. Например, если после десериализации объекта требуется дополнительная инициализация, можно добавить метод со следующей подписью:
private void readObject(java.io.ObjectInputStream s)
throws java.io.IOException, java.lang.ClassNotFoundException
Для полного контроля над сериализацией и десериализацией, используйте java.io.Externalizable
вместо Serializable
.
Есть много других точек расширения в сериализации Java, если это необходимо. спецификация сериализации является официальным и полным источником для изучения всех из них.