2.7 KiB
aliases, tags, date, zero-link, parents, linked
| aliases | tags | date | zero-link | parents | linked | |||
|---|---|---|---|---|---|---|---|---|
|
2023-11-20 |
|
Enum это объект, как и все в Java. Однако это особенный объект. Каждый из объектов enum создаётся только единожды. Давайте на примере:
enum TestEnum {ONE, TWO, THREE}
Если мы создадим 10 переменных TestEnum.ONE, то все они будут ссылаться на один и тот же объект. И поэтому enum можно сравнивать с помощью == и это корректно и будет работать.
Сторонники такого подхода называют следующие преимущества. Давайте их разберем.
Вы никогда не получите NullPointerException. И это правда, но если вы будете придерживаться правила "сравнение константы слева", то и при использовании .equals() NullPointerException вам не страшен.
Оператор == работает быстрее. Быстрее чего? Видимо метода .equals(). Давайте посмотрим реализацию метода .equals() у enum.
Оператор == более понятный синтаксически. Это еще почему? Для сравнения объектов в Java используется .equals(). Enum это объект. Логичнее и очевиднее использовать .equals() для сравнения, чтобы не нарушать единообразие сравнения объектов.
На мой взгляд, правильнее использовать .equals(), главное не забывать о правиле "Сравнение константы слева".
Мета информация
Область:: ../../meta/zero/00 Java разработка Родитель:: Источник:: Автор:: Создана:: 2023-11-20
