Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> equals() какой порядок? 
:(
    Опции темы
Samotnik
Дата 25.8.2013, 00:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 8
Всего: 191



Привет!

Не могу найти оф инфу о том, какой порядок должен быть, когда используем equals()
Пример
Код

enum Color { BLACK, WHITE };
Color color = null;
if (color.equals(Color.BLACK)) {  //так правильно
//bla bla 
}
if (Color.BLACK.equals(color)) {  //или так?
//bla bla 
}

PM MAIL   Вверх
Arantir
Дата 25.8.2013, 01:40 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Рыбак без удочки
**


Профиль
Группа: Участник
Сообщений: 960
Регистрация: 18.11.2012

Репутация: 1
Всего: 55



Конкретно в Вашем случае?

Цитата

enum Color { BLACK, WHITE };
Color color = null;
if (color.equals(Color.BLACK)) {  // NullPointerException

}
if (Color.BLACK.equals(color)) {  // false

}


Добавлено через 3 минуты и 25 секунд
А вообще enum можно и с помощью простого == сравнивать.

Добавлено через 6 минут и 7 секунд
Для размышлений http://c2.com/cgi/wiki?CompareConstantsFromTheLeft
Кстати, прием полезен практически в любом императивном языке...


--------------------
interface Жопа {
    // ATTENTION: has to be implemented by every class of the project for proper project work
}
PM   Вверх
Samotnik
Дата 25.8.2013, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 8
Всего: 191



Arantir,  smile  щютник. Вопрос не в том, будет NPE или нет. Разгорелась дискуссия о том, где должна стоять константа у equals. Я считаю, что справа, парень один утверждает, что слева. 
Мой аргумент: при всех сравнения в Java доках константы всегда справа. Например: http://docs.oracle.com/javase/tutorial/jav...ndbolts/if.html 
PM MAIL   Вверх
Samotnik
Дата 25.8.2013, 12:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 8
Всего: 191



Почитал статью, оказывается дело как раз таки в НПЕ. Видимо только по этой причине и нужно использовать константу справа. Спасибо

Добавлено через 51 секунду
пока тему не закрываю, может еще какие мысли будут smile
PM MAIL   Вверх
Arantir
Дата 25.8.2013, 12:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Рыбак без удочки
**


Профиль
Группа: Участник
Сообщений: 960
Регистрация: 18.11.2012

Репутация: 1
Всего: 55



Цитата(Samotnik @  24.8.2013,  23:04 Найти цитируемый пост)
какой порядок должен быть

Samotnik, 
Цитата(Samotnik @  25.8.2013,  10:47 Найти цитируемый пост)
щютник


Какой вопрос — такой ответ  smile 
В программировании ничего не "должно". Если компилируется и выполняет требования задачи — значит правильно.
Доки — это примеры. Компилируются и роль примеров выполняют. Что от них еще можно хотеть? Java-доки про Java, а не о "как быть pro в программировании".

Если уж пошла тема, то самый безопасный способ для enum — это "==" с left hand constant.
Код

if (Color.BLACK == color) {
}

Тут и ошибки проявляются еще во время компиляции — Incompatible types, опечатка "=" вместо "==", и NPE не будет.
Внутри enum'ного equals все равно лежит тот же "==".

А вот это
Код

if (Something.BLACK.equals(Another.LIGHT))
скомпилится молча и будет возвращать false. В конце концов это может стать очень труднонаходимым багом...

Это сообщение отредактировал(а) Arantir - 25.8.2013, 12:25


--------------------
interface Жопа {
    // ATTENTION: has to be implemented by every class of the project for proper project work
}
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0448 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.