Я читал, что в целом абстрактные классы не должны делаться сериализуемыми в Java.Подклассы должны быть сериализуемыми (с пользовательскими методами чтения, записи, если необходимо, например, когда у абстрактных классов есть поля).
В чем причина этого?Почему это считается плохим дизайном?
Update1: У меня есть абстрактный класс с некоторыми полями и тремя подклассами.На данный момент я использую следующий подход.
Я сделал все подклассы сериализуемыми с помощью пользовательских методов чтения, записи.В абстрактном классе у меня есть следующие методы.
void writeFields(ObjectOutputStream out)throws IOException { .... }
void readFields(ObjectInputStream in) throws IOException, ClassNotFoundException{ ... }
В пользовательском методе чтения напишите методы в подклассах, которые я вызываю, чтобы (де) сериализовать поля в абстрактном классе.Правильный ли этот подход?Или есть другой лучший подход?
Обновление 2: Я воспользовался советом Тома и сделал свой абстрактный класс сериализуемым.(Я хочу, чтобы все подклассы были сериализуемыми, и у меня есть данные в абстрактном классе). Это отступление, но только для завершения рассказа, который я использую , чтобы изменить окончательные поля, как советовал Джереми Мэнсон.