Разница между настраиваемой сериализацией и экстернализацией?

Недавно из любого источника я узнал, что пользовательская сериализация - это процесс, в котором мы можем определить writeObject (ObjectOutputStream os) и readObject (ObjectInputStream is) в нашем классе Serializable, и эти методы будут выполняться во время сериализации и десериализации соответственно для выполнения нашей функциональности.

Позже я узнал, что Externalization - это интерфейс, который определяет 2 метода: 1- writeExternal() 2- readExternal()

Наш класс может реализовать Externalizable и переопределить эти методы, когда мы не хотим сериализовать весь объект. Эти методы будут выполняться во время сериализации и десериализации.

У меня есть сомнения, почему мы не можем использовать пользовательскую сериализацию, реализуя методы Serializable и определяя методы writeObject (ObjectOutputStream os) и readObject (ObjectInputStream is) даже для сериализации некоторых атрибутов объекта. Почему эта экстернализация вошла в картину.

Спасибо,

1 ответ

Externalizable был введен намного раньше Serializable интерфейс в течение JDK 1,1 дня. В течение этого времени программист должен был написать точную логику того, как объект должен быть сериализован, т. Е. Все, что должно происходить внутри writeExternal() а также readExternal() должен был быть написан явно. Serializable был введен позже, чтобы избавиться от этой головной боли.

Но в некоторых случаях, используя Externalizable имеет свои преимущества, так как позволяет вам определять, как класс должен быть сериализован вашим собственным способом, а не в зависимости от того, что определено под капотом API языка Java. Я думаю, что ваш класс может подпадать под эту категорию.

Чтобы ответить на ваш вопрос, добавленный в последней части, вы можете добиться выборочной сериализации членов внутри класса, пометив их как временные.

Другие вопросы по тегам