One of the Sonar rules is Enum values should be compared with "=="
. The reasons are as follows:
Testing equality of an enum value with
equals()
is perfectly valid because an enum is an Object and every Java developer knows==
should not be used to compare the content of an Object. At the same time, using==
on enums:
provides the same expected comparison (content) as
equals()
is more null-safe than
equals()
provides compile-time (static) checking rather than runtime checking
For these reasons, use of
==
should be preferred toequals()
.
Last but not least, the ==
on enums is arguably more readable (less verbose) than equals()
.