Влияние модификаторов
Какое влияние оказывают на сериализуемость модификаторы полей static и final
Модификатор
static
:
Поля static не сериализуются, поскольку они принадлежат классу, а не конкретному экземпляру объекта.
final
:
Поля final сериализуются как обычно. Их значение сохраняется при сериализации и восстанавливается при десериализации.
В чем проблема сериализации Singleton?
Проблема сериализации Singleton в том, что при десериализации создается новый экземпляр класса, что нарушает принцип единственности экземпляра. Чтобы избежать этого, нужно реализовать метод readResolve, который возвращает существующий экземпляр.
private Object readResolve() throws ObjectStreamException {
return getInstance();
}
Это гарантирует, что при десериализации будет возвращен единственный экземпляр Singleton.