--- aliases: tags: - maturity/🌱 - type/opinion date: 2023-11-20 zero-link: - "[[../../meta/zero/00 Java разработка|00 Java разработка]]" parents: linked: --- Enum это объект, как и все в Java. Однако это особенный объект. Каждый из объектов enum создаётся только единожды. Давайте на примере: ```java enum TestEnum {ONE, TWO, THREE} ``` Если мы создадим 10 переменных `TestEnum.ONE`, то все они будут ссылаться на один и тот же объект. И поэтому enum можно сравнивать с помощью `==` и это корректно и будет работать. Сторонники такого подхода называют следующие преимущества. Давайте их разберем. **Вы никогда не получите `NullPointerException`.** И это правда, но если вы будете придерживаться правила ["сравнение константы слева"](Сравнение%20константы%20слева%20в%20Java.md), то и при использовании `.equals()` `NullPointerException` вам не страшен. **Оператор == работает быстрее.** Быстрее чего? Видимо метода `.equals()`. Давайте посмотрим реализацию метода `.equals()` у enum. ![](../../meta/files/images/Pasted%20image%2020231120093026.png) **Оператор == более понятный синтаксически.** Это еще почему? Для сравнения объектов в Java используется `.equals()`. Enum это объект. Логичнее и очевиднее использовать `.equals()` для сравнения, чтобы не нарушать единообразие сравнения объектов. На мой взгляд, правильнее использовать `.equals()`, главное не забывать о правиле "[Сравнение константы слева](Сравнение%20константы%20слева%20в%20Java.md)". *** ## Мета информация **Область**:: [[../../meta/zero/00 Java разработка|00 Java разработка]] **Родитель**:: **Источник**:: **Автор**:: **Создана**:: [[2023-11-20]] ### Дополнительные материалы - ### Дочерние заметки ```dataview LIST FROM [[]] WHERE contains(Родитель, this.file.link) or contains(parents, this.file.link) ```