Итак, мы используем VersionedPortable в качестве протокола для Hazelcast, и мы знаем, что порядок полей важен при сериализации / десериализации.Чего мы не понимаем, так это как обрабатывать наследование в сериализованных / десериализованных классах?
Class A {
int one;
int two;
void writePortable( PortableWriter writer ) {
writer.writeInt( "one", one );
writer.writeInt( "two", three );
}
}
Class B extends A {
int three;
void writePortable( PortableWriter writer ) {
super.writePortable(writer);
writer.writeInt( "three", one );
}
}
Теперь допустим, что мы добавили поле с именем четыре в класс A - тогда порядок нарушен.Четыре будут сериализованы между двумя и тремя, что не правильно.Единственный вариант, который я могу придумать, - это реализовать только методы write / read-метода в листовых классах, но со временем будет очень сложно поддерживать.Кроме того, если у вас много листовых классов, это, скорее всего, будет неправильно.Есть ли лучший способ решить эту проблему?