У меня есть перечисление JJJ, которое имеет 3 значения: A, B и C. В предыдущих версиях моей программы у него было одно дополнительное значение: D. Я хотел бы иметь возможность читать в сериализованных объектах, созданных предыдущимиверсии программы, но возникает исключение, когда в сериализованном объекте встречается переменная типа JJJ со значением 'D'.Оптимально, я хотел бы быть в состоянии перехватить процесс десериализации и сказать ему просто сопоставлять буквы D с буквами C., когда он встречает их.
Согласно http://docs.oracle.com/javase/6/docs/platform/serialization/spec/serial-arch.html (сериализация констант Enum), этоне похоже, что есть простой способ сделать это ... Я знаю, что один из подходов - переопределить readObject для классов, которые содержат переменные-члены типа JJJ, но это будет сложно и болезненно из-за размера и области действия.программы (десятки сериализуемых классов имеют переменные-члены типа JJJ и переопределение readObject для обработки поля JJJ означает, что мне придется вручную обрабатывать и все другие поля).
Я также пыталсячтобы решить эту проблему, применив мой собственный подкласс ObjectInputStream, но, к сожалению, биты десериализации enum, которые мне действительно нужно получить и переопределить, чтобы решить эту проблему, являются частными или частными ...
Есть предложения?