Сравнение членов перечисления Java: == или равно()
При работе с перечислениями Java часто возникает вопрос относительно соответствующего оператора для используйте для сравнения членов перечисления. Традиционно разработчики использовали метод .equals(), как показано в:
public useEnums(SomeEnum a) { if (a.equals(SomeEnum.SOME_ENUM_VALUE)) { ... } }
Однако некоторые примеры демонстрируют использование оператора == для сравнения:
public useEnums2(SomeEnum a) { if (a == SomeEnum.SOME_ENUM_VALUE) { ... } }
Какому из этих операторов следует отдать предпочтение для сравнения членов перечисления?
Техническая эквивалентность и нулевая безопасность
Интересно, что оба подхода технически корректны. Исходный код .equals() в перечислениях Java показывает, что он просто делегирует ==. Однако есть небольшая разница: == также обеспечивает нулевой уровень безопасности.
Используя ==, вы можете защититься от потенциальных нулевых ссылок при сравнении членов перечисления. Этот аспект становится особенно актуальным при работе с кодом, унаследованным от устаревших систем или сторонних библиотек, где иногда могут встречаться нулевые значения.
Рекомендация
Учитывая тонкое преимущество null безопасности и того факта, что и ==, и .equals() по существу выполняют одно и то же сравнение, обычно рекомендуется использовать == при сравнении членов перечисления Java. Эта рекомендация также соответствует личным предпочтениям автора.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3