Один вопрос, который может возникнуть из-за этого, заключается в том, что использование метода вместо прямого доступа к полю может снизить производительность.
Ответ на самом деле не так, как компиляторы оптимизируют код, так что если ваш метод выполняет только return field;
, где field
- это поле в вашем классе, которое вы скрываете с помощью setter / getter, он фактически получит прямой доступ к полю. Таким образом, в большинстве случаев вы получаете одинаковую производительность, но при этом сохраняете возможность позже изменить методы set / get.
Эффективное программирование на Java в Joshua Block - отличная книга с советами о том, как писать хороший код, а также с объяснениями, почему. Почему использование setter / getter является одним из советов.
Примечание: вы можете заметить, что в некоторых книгах / документах поля, которые представляют установщик / получатель вместо прямого доступа, называются «свойствами» вместо полей. Например. в C # вы даже можете указать, что поле является свойством, и вам больше не нужно определять set / get (хорошая функция, я думаю).