2012-04-17 2 views
2

Простой вопрос, который является правильным способом использования equals, также дает обоснование ответа.Какое правильное использование метода equals в java?

"Delta".equals(type) 

или

type.equals("Delta") 
+2

Оба одинаково хороши. Первый гарантирует, что вы не разыщите нуль. – duffymo

ответ

8

Вообще

"Delta".equals(type) 

благоприятствует, так как невозможно бросить NullPointerException. Тем не менее, другой способ не является «неправильным», поскольку он не является ошибкой с Спецификацией Java Language; однако он просто подвержен отказу , если(type == null) - это правда.

Термин «лучшая практика» используется, чтобы отличать лучший выбор от правильного, но более низкого выбора. В этом случае "Delta".equals(type) является лучшей практикой, чтобы избежать ненужного защитного кода, необходимого для обработки ссылок на нулевой указатель.

+0

+1 хорошая точка ... – Rachel

+0

Я не согласен с тем, что это лучшая практика. Лучшая практика заключается в том, чтобы сделать код максимально читаемым, а вторая версия выражает намерение лучше, чем первая. Это безопаснее, но более «geeky». – Puce

+1

Считываемость - это не вопрос визуального представления, а вопрос о том, является ли эта презентация операциями чисто, без вводящих в заблуждение контекстов. 'X + 1' и' 1 + X' одинаково читаемы, хотя большинство из них сначала выбирают 'X + 1'. В этом случае оба выражения: «Object equals Object», но один порядок этого выражения может привести к сбою вашей программы. Ни один из них не скрывает, что происходит при оптимизации _clever. Наконец, имейте в виду, что код __readable является вторичным по отношению к операционному коду__, даже среди экспертов по качеству кода, они не выбирают ошибку. –

1

Оба правильные. Первый называет сравнить метод на определенно непустой строкой, поэтому он не будет бросать NullPointerException, то второй мог бы, если type является нулевым

sfirst версия «безопаснее», второй «читает» более естественно

+0

Другой способ, но я согласен, что type.equals («Delta») выражает больше намерения (вы хотите проверить, равен ли тип Delta, если Delta не равна типу). Вот почему я обычно предпочитаю вторую версию. – Puce

+0

Спасибо, получил мой заказ в замешательстве – Attila

Смежные вопросы