Компилятор преобразует экземпляры enum в static константы, которые к тому же являются singleton-ами. Поэтому, для сравнения можно использовать «==».
Все классы наследуются от java.lang.Enum. При этом все методы, кроме toStrng являются финальными. Поэтому, функция equals, также подходит для сравнения перечислений. Но, проще использовать оператор «==», так как:
- Чтобы не появилась ошибка NullPointerException, нужно удостовериться, что переменная, у которой вызывается метод equals, не null. С «==» таких сложностей нет.
- Если попытаться сравнивать объекты разных типов, оператор «==» предупредит, что такое сравнение невозможно. Функция equals в таком случае будет всегда выдавать false, такую ошибку обнаружить намного труднее.
Оператор «==» выполняется быстрее.