Как Hazelcast VersionedPortable будет работать с наследованием классов - PullRequest
0 голосов
/ 20 сентября 2019

Итак, мы используем 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-метода в листовых классах, но со временем будет очень сложно поддерживать.Кроме того, если у вас много листовых классов, это, скорее всего, будет неправильно.Есть ли лучший способ решить эту проблему?

...