Enum constants that are never used at runtime are redundant and should be removed.

An enum constant is considered dead if at runtime it is never used, or only used in comparisons. Any enum constant which is not dead is considered to be "live".

An enum constant that is only used in a comparison is considered dead because the comparison will always produce the same result. This is because no variable holds the value of the enum constant, so the comparison of any variable against the constant will always return the same result.

Before making any changes, confirm that the enum constant is not required by verifying that the enum constant is never used. This confirmation is necessary because there may be project-specific frameworks or techniques which can introduce hidden dependencies. If this project is for a library, then consider whether the enum constant is part of the external API, and may be used in external projects that are not included in the snapshot.

After confirming that the enum constant is not required, remove the enum constant. You will also need to remove any references to this enum constant, which may, in turn, require removing other dead code.

In the following example, we have an enum class called Result, intended to report the result of some operation:

The method runOperation performs some operation, and returns a Result depending on whether the operation succeeded. However, it only returns either SUCCESS or FAILURE, and never ERROR. The main method calls runOperation, and checks whether the returned result is the ERROR. However, this check will always return the same result - false. This is because the operationResult can never hold ERROR, because ERROR is never stored or returned anywhere in the program. Therefore, ERROR is dead and can be removed, along with the comparison check, and the exit(1);.