Страницы

Поиск по вопросам

вторник, 2 октября 2018 г.

Порядок элементов при сравнении на равенство

Можно написать условие вот так:
if (repository == null) {}
а можно вот так:
if (null == repository) {}
В чем разница?


Ответ


Условиями Йоды (Yoda Conditions) называется приём этот. Первой константа ставится, если ошибётесь и используете = вместо == вы, указал на эту ошибку компилятор вам чтобы. В Java это несущественно, т.к. ошибка будет почти всегда, исключение описано в соседнем ответе.
Есть другой случай, когда порядок сравнения имеет значение в Java — .equals(). Предположим, у вас есть объект, который вы получаете извне метода и образец для сравнения.
if (foo.equals(sample)) {...}
Если сравнивать так, что может случиться, что полученный объект будет равен null и тогда будет выброшено исключение. А ещё это может быть хитрый объект, в котором .equals() переопределено так, чтобы всегда возвращать true
Гораздо надёжнее сравнивать в обратном порядке:
if (sample.equals(foo)) {...}

Комментариев нет:

Отправить комментарий