如何从属性获取枚举值

Let*_*rIt 3 java enumeration

我有值的枚举VALIDINVALID,其中有一个与之相关的布尔属性.我想根据我提供的布尔值获取枚举值.

如果是true我应该得到VALID,如果是false我应该得到INVALID.我想基于成员变量的值,在下面的getter方法中这样做

public boolean getCardValidityStatus() {
    return CardValidationStatus status = CardValidationStatus(this.mCardValidityStatus));
}
Run Code Online (Sandbox Code Playgroud)

我的代码:

private enum CardValidationStatus {
    VALID(true),
    INVALID(false);

    private boolean isValid;
    CardValidationStatus(boolean isValid) {
        this.isValid = isValid;
    }
    public boolean getValidityStatus() {
        return this.isValid;
    }
}
Run Code Online (Sandbox Code Playgroud)

ern*_*t_k 6

您可以使用枚举本身中的静态查找方法实现此目的:

private enum CardValidationStatus {
    VALID(true),
    INVALID(false);

    //...

    public static CardValidationStatus forBoolean(boolean status) {

        //this is simplistic given that it's a boolean-based lookup
        //but it can get complex, such as using a loop...
        return status ? VALID : INVALID; 
    }
}
Run Code Online (Sandbox Code Playgroud)

并且可以使用以下方法检索适当的状态:

public CardValidationStatus getCardValidityStatus() {
    return CardValidationStatus.forBoolean(this.mCardValidityStatus));
}
Run Code Online (Sandbox Code Playgroud)