列舉可以用於一些狀態、字典等定義,有時我們需要將給定值與列舉元素進行比較,此時就需要提供一個支援列舉比較的方法
/**
* 基本的列舉介面,提供比較方法
*/
public interface BaseEnum<T> {
T getCode();
/**
* 列舉元素的比較
*
* @param inputVal
* @return
*/
default boolean enumEquals(T inputVal) {
return Objects.equals(getCode(), inputVal);
}
}
如Http狀態列舉:
public enum HttpStatusEnum implements BaseEnum<Integer> {
OK(200, "OK"),
NOT_FOUND(404, "Not Found"),
INTERNAL_SERVER_ERROR(500, "Internal Server Error"),
;
final Integer code;
final String description;
HttpStatusEnum(Integer code, String description) {
this.code = code;
this.description = description;
}
@Override
public Integer getCode() {
return code;
}
public String getDescription() {
return description;
}
}
呼叫列舉元素的比較方法:
boolean b = HttpStatusEnum.OK.enumEquals(200);
boolean c = HttpStatusEnum.NOT_FOUND.enumEquals(404);
System.out.println(b);
System.out.println(c);