- Type safety and value safety.
- Guaranteed singleton.
- Ability to define and override methods.
- Ability to use values in
switchstatementcasestatements without qualification. - Built-in sequentialization of values via
ordinal(). - Serialization by name not by value, which offers a degree of future-proofing.
EnumSetandEnumMapclasses.