Я столкнулся с Collection
с разрешением до null
раньше, когда сериализованный Collection
пуст. Хитрость заключается в том, чтобы определить метод Object readResolve()
в вашем классе, который вызывается инфраструктурой сериализации после чтения объекта из источника данных. Отсюда вы можете вернуть новый экземпляр вашего класса с нулевыми значениями, замененными реальными пустыми Collection
. Так что-то вроде:
public class MyClass implements Serializable {
private final Map<String,String> foo;
public MyClass() {
foo = new HashMap<String,String>();
}
public MyClass(final Map<String,String> foo) {
this.foo = new HashMap<String,String>(foo);
}
...
public Object readResolve() {
return (foo == null ? new MyClass() : new MyClass(foo));
}
}
Копирование других полей, которые вы определили, как необходимо.