列舉比較

Maverickos發表於2024-10-23

列舉可以用於一些狀態、字典等定義,有時我們需要將給定值與列舉元素進行比較,此時就需要提供一個支援列舉比較的方法

/**
 * 基本的列舉介面,提供比較方法
 */
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);

相關文章