В современных реализациях Java (по крайней мере, JDK 6–10) классы ObjectInputStream
и ObjectOutputStream
распознают методы readObject
, readObjectNoData
и writeObject
, только если они объявлены как private
иНЕ static
.
(Я не смог найти это явно в какой-либо документации, но ограничение явно реализовано в коде.)
Таким образом, независимо от того, является ли оноХорошая идея или нет, но FindBugs правильно указал, что не приватный метод readObject
является ошибкой.Он не будет использоваться.
Единственная причина, по которой я хочу сделать этот метод открытым, - сделать его окончательным, чтобы наследующие объекты не могли его использовать.
Iне думайте, что вам следует попытаться сделать это.Поместите примечание в javadoc уровня класса, чтобы сказать, что вы думаете, что подклассы должны и не должны делать.Если кто-то решит реализовать класс, игнорируя этот совет, его проблема состоит в том, чтобы справиться с последствиями.
Проблема с попыткой заставить других людей реализовать подклассы определенным образом заключается в том, что они могут иметьВ случае, если требует , чтобы они действовали по-другому ... по причинам, которые вы не в состоянии понять.Лучше оставить будущим разработчикам свободу делать то, что они хотят, и позволить им нести ответственность за последствия.