Можете ли вы объяснить имена методов isXxx в Java?
Существует ли в одном из спецификаций любая ссылка на методы, начинающиеся с "is", а суффикс имени метода - это имя свойства (аналогично методам getter/setter для Java beans)?
Например:
public boolean isConditionTrue() {
...
...
}
private boolean conditionTrue;
Спасибо!
Ответы
Ответ 1
действует только для примитивного булева. Вот выдержка из спецификация:
8.3.2 Логические свойства Кроме того, для булевых свойств мы позволяем методу геттера соответствовать шаблону: public boolean is(); Этот метод "есть" может быть предоставлен вместо "get" meth- od, или он может быть предоставлен в дополнение к методу "get". В любом случае, если метод "is" присутствует для логического свойства, тогда мы будем используйте метод "is", чтобы прочитать значение свойства. Примером логического свойства может быть: public boolean isMarsupial(); public void setMarsupial (boolean m);
Помните об использовании функций isXxx() : Boolean
, если вы собираетесь использовать их в сочетании с такими вещами, как теги JSTL (с использованием синтаксиса ${object.xxx}
). Они не подберут его, и вы должны изменить его на getXxx() : Boolean
.
Ответ 2
Это соглашение об именах Java,
Если метод возвращает значение boolean
, используйте is
или has
в качестве префикса для имя метода. Например, используйте isOverdrawn
или hasCreditLeft
для методы, возвращающие значения true
или false
. Избегайте использования слова not
в имени метода boolean
вместо этого используйте оператор !
. Для например, используйте !isOverdrawn
вместо isNotOverdrawn
.
См. также:
В соответствии с Спецификацией языка Java,
Метод, который проверяет условие boolean
V
об объекте, должен быть назван isV
. Примером может служить метод isInterrupted
класса Thread
.
Ответ 3
Это is
префикс для методов доступа к boolean
типа переменных экземпляра.
Это соглашение для типов данных boolean
, а get/set
- convention
для других типов.