«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Сравнение членов Java Enum: следует ли использовать == или равно()?

Сравнение членов Java Enum: следует ли использовать == или равно()?

Опубликовано 21 ноября 2024 г.
Просматривать:146

Comparing Java Enum Members: Should You Use == or equals()?

Сравнение членов перечисления 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