我有值的枚举VALID和INVALID,其中有一个与之相关的布尔属性.我想根据我提供的布尔值获取枚举值.
如果是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)
您可以使用枚举本身中的静态查找方法实现此目的:
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)