枚举比较

Maverickos / 2024-11-11 / 原文

枚举可以用于一些状态、字典等定义,有时我们需要将给定值与枚举元素进行比较,此时就需要提供一个支持枚举比较的方法

/**
 * 基本的枚举接口,提供比较方法
 */
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);