2010-09-29 5 views
4

У меня есть простая структура данных, которая сериализована и десериализована. При десериализации я хочу, чтобы сама структура данных делала последующий шаг обработки. В нашем случае он должен просто вызвать String.intern() для всех строк, которые он содержит.java - вызов стандартной десериализации внутри пользовательской десериализации


Преимущественные ответы на вопросы, не связанные:

Почему вы не просто делать это после того, как правило, десериализации объекта?

  1. Этот объект сериализации/десериализации в большом количестве мест
  2. Эта структура данных является частью более крупных объектов, которые упорядочиваются/десериализованных, поэтому вам придется просматривать любой объект герметизирующего после десериализации, а
  3. Другие developpers с помощью рамки могут не знать или забыть этот шаг и приведет к огромным черепашки магнита
  4. было бы некрасиво

Почему вы используете String.intern() в первое место?

По соображениям безопасности. Мы требуем огромной обработки текста и вычислений.


Другими словами, в:

public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException; 

Есть ли способ вызова/стандартный десериализации по умолчанию внутри? (Чтобы мы могли просто добавить наш маленький шаг после этого)

Спасибо!

Arnaud

ответ

4

Да - in.defaultReadObject().

Но вы должны использовать readObject(..) не readExternal(..)

Обратите внимание, что если вы используете Externalizable, вы по своему усмотрению. Вы можете использовать Serializable и частично настроить выход.

+0

спасибо за быстрый ответ, я попробую это прямо сейчас! – dagnelies

Смежные вопросы