Исправление названий улиц с помощью регулярного выражения

Я читал, что обычно абстрактные классы не следует делать сериализуемыми в Java. Подклассы должны быть сериализуемыми (с помощью специальных методов чтения и записи, если требуется, например, когда абстрактные классы имеют поля).

В чем причина этого? Почему это считается плохим дизайном?

Обновление1: У меня есть абстрактный класс с некоторыми полями и тремя подклассами. На данный момент я использую следующий подход.

Я сделал все подклассы сериализуемыми с помощью специальных методов чтения и записи. В абстрактном классе у меня есть следующие методы.

void writeFields(ObjectOutputStream out)throws IOException { .... }

void readFields(ObjectInputStream in) throws IOException, ClassNotFoundException{ ... }

В пользовательских методах чтения и записи в подклассах я вызываю эти методы для (де) сериализации полей в абстрактном классе. Это правильный подход? Или есть другой лучший подход?

Обновление 2: Я взял Тома и сделал мой абстрактный класс Serializable. (Я хочу, чтобы все подклассы были сериализуемыми, и у меня есть данные в абстрактном классе). Это отступление, но для завершения истории я использую отражение для изменения конечных полей, как советует Джереми Мэнсон.

7
задан KennyLog_ins 12 October 2016 в 14:25
поделиться