比较 Java 枚举值
有没有办法检查枚举值是否“大于/等于”另一个值?
我想检查错误级别是否为“错误或更高”。
所有 Java 枚举都实现了可比较:http://java.sun.com/javase/6/docs/api/java/lang/Enum.html
您也可以使用该方法将它们转换为s,然后比较是微不足道的。ordinal
int
if (ErrorLevel.ERROR.compareTo(someOtherLevel) <= 0) {
...
}
一个更具表现力的版本将是
myError.isErrorOrAbove(otherError)
或
myError.isWorseThan(otherError)
这样,您就可以在枚举中定义顺序,并可以根据需要在内部更改实现。现在,枚举的客户端可以在不知道任何细节的情况下比较值。
一个可能的实现
public enum ErrorLevel {
INFO(0),
WARN(1),
ERROR(2),
FATAL(3);
private Integer severity;
ErrorLevel(int severity) {
this.severity = severity;
}
public boolean isWorseThan(ErrorLevel other) {
return this.severity > other.severity;
}
}
我也不建议使用ordinal()方法进行比较,因为当有人更改Enum值定义的顺序时,您可能会遇到意外的行为。