Сериализация / десериализация через суперкласс - PullRequest
5 голосов
/ 08 декабря 2011

Предположим, у меня есть 1 базовый класс и производный класс. В производном классе есть дополнительные поля, которых нет в базовом классе.

Затем я создаю экземпляр производного класса и назначаю его определению базового класса. Что происходит, когда я сериализую и десериализую объект через базовый класс.

Например:

Class TypeA{
   int var1;
}

Class TypeB extends class TypeA{
   int var2;
}

Class X{
  public TypeA obj = new TypeB();
}

Если я сейчас сериализую "obj", будет ли включен var2?

1 Ответ

4 голосов
/ 08 декабря 2011

Да, сериализация не зависит от типа ссылки (которая на самом деле obj, я имею в виду ссылку), но от типа / класса объекта, на который ссылаются, который все еще TypeB.Если вы позвоните по номеру obj.getClass(), он вернет TypeB.class, и это также увидит сериализация.

...