Предотвращение взлома сингетона путем сериализации десериализации в Java - PullRequest
0 голосов
/ 26 апреля 2020

В этой статье говорится, что одноэлементный шаблон может быть нарушен сериализацией. Для этого можно сериализовать одноэлементный объект, а затем снова десериализовать его до нового набора одноэлементного класса. Затем предлагается решение для реализации метода readResolve().

Я сомневаюсь, что мы можем просто запретить сериализацию, сделав синглтон-класс не реализующим Serializable. Если мы сделаем это, то попытка сериализации одноэлементного экземпляра вызовет java.io.NotSerializableException

Q1. Но тогда почему статья предлагает реализовать readResolve()?

Q2. Предполагается ли, что по какой-то причине одноэлементному классу может потребоваться возможность сериализации, поэтому требуется реализация Serializable, но все же мы должны убедиться, что он не будет десериализован до 2-го экземпляра, и это может быть достигнуто только путем реализации readResolve()?

Q3. Если ответ на вопрос Q2 положительный, то можем ли мы гарантировать, что Serializable не будет реализован, когда он не требуется, и не будет реализован readResolve(), чтобы избежать отрыва синглтона от сериализации-десериализации или нам все еще нужно реализовать readResolve()?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...