Как в Java скрыть даже от разработчика поле, доступ к которому должен осуществляться с помощью геттера и/или сеттера
Много написано о том, что хорошей практикой является объявление полей экземпляра класса с модификатором private, а чтение и модификацию их осуществлять с помощью public геттера и/или сеттера. Действительно, этот приём даёт уверенность, что вся логика, предусмотренная разработчиком для событий чтения/записи, будет выполнена в случае использования класса кем-либо. Однако, разработчик класса в методах по-прежнему имеет возможность читать и записывать значение поля напрямую! Чтобы избежать этого, предлагаю следующий трюк. Потребуется чуть больше кода, но теперь даже IDE не сможет подсовывать это поле в подсказках.
Для каждого "super private" поля нам потребуется Supplier и Consumer. Вся логика геттера и сеттера происходит в них. Сами геттер и сеттер - лишь обёртки для public доступа.
Всё понятно из примера ниже.












