#java
Вопрос, возможно, глупый, но всё же... Нужны ли геттеры и сеттеры для статических полей, или их лучше объявлять public? Т.е, какой из вариантов лучше? 1 вариант: public abstract class SomeClass { public static boolean isReadOnly = false; } и далее использовать SomeClass.isReadOnly = true; 2 вариант: public abstract class SomeClass { private static boolean isReadOnly = false; public static boolean isReadOnly() { return isReadOnly; } public static void setReadOnly(boolean isReadOnly) { SomeClass.isReadOnly = isReadOnly; } } и далее использовать SomeClass.setReadOnly(true);
Ответы
Ответ 1
Область видимости поля нужно определять исходя из того, где оно будет использовано. (ваш К.О.) В вашем случае с примитивным типом никакой разницы нет. Вы в обоих вариантах позволяете модифицировать переменную. Если, к примеру, вам нужны какие-то дополнительные проверки при записи, тогда имеет смысл использовать приватное поле и сеттер. Или если у вас поле-объект и вы не хотите давать ссылку на него напрямую (как в случае с public), тогда имеет смысл использовать приватное поле и геттер, который возвращает копию объекта.Ответ 2
Добавлю к уже сказанному. Геттеры и сеттеры позволяют более гибко избавиться от поля вообще, не меняя внешний API. То есть, вызываться будет сеттер, но он уже не будет сетить в поле и поля уже не будет, а будет какая-то другая логика. А вообще, советую почитать книгу Джошуа Блоха Effective Java.
Комментариев нет:
Отправить комментарий