Правила сериализации
При сериализации автоматически не сериализуются:
— transient переменные
— static переменные — унаследованные переменные (они будут инициализированы с помощью конструктора родительского класса без параметров).
Все это можно разными способами сериализовать врукопашную (externalizable).
Для сериализации объектов внутренних нестатических классов, внешние классы должны быть сериализуемыми.
Да, чтобы немного дополнить алгоритм стандартной сериализации/десериализации, используют два метода:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | public class B extends A implements Serializable { private String nameB; private void writeObject(ObjectOutputStream oos) throws Exception{ oos.defaultWriteObject(); oos.writeObject(nameA); } private void readObject(ObjectInputStream ois) throws Exception{ ois.defaultReadObject(); nameA = (String) ois.readObject(); } public B(String nameA, String nameB) { super(nameA); this.nameA += nameA; this.nameB = nameB; } } |
(Просмотрено 226 раз, 1 раз за сегодня)