使用错误代码在枚举中搜索状态代码



我有这个枚举结构,用于存储错误响应:

public enum ErrorDetail implements CjmErrorInfo {
JOURNEY_NOT_FOUND("1000", "not found", "not found", "not found", HttpStatus.NOT_FOUND),
private String errorCode;
private String message;
private String detail;
private String title;
private HttpStatus httpStatus;
public String getErrorCode()
{
return this.errorCode;
}
public HttpStatus getHttpStatus(){
return this.httpStatus;
}
}

但是我想根据错误代码获取http状态(HttpStatus.NOT_FOUND(。如何实现?

您可以向enum添加静态方法,如下所示:

public static ErrorDetail getByErrorCode(String errorCode) {
return Arrays.stream(Test.values()).filter(errorDetail -> errorDetail.getErrorCode().equals(errorCode))
.findFirst().orElse(null);
}

顺便说一下,你的enum缺少构造函数!需要在枚举常量上定义所有这些字段,否则它将无法编译。

也许是这样的:

public String getHttpStatusBasedOnErrorCode(String errorCode) {
for(ErrorDetail e : ErrorDetail.values()) {
if(errorCode.equals(e.getErrorCode())) {
return e.getHttpStatus().toString();
}
}
return "error code not found";
}

您可以保存使用 errorCode 或消息(或其他字段(作为键并将枚举元素作为值的静态映射。在这种情况下,您可以轻松实现像getErrorDetailByMessage()这样的方法,它只是从该映射中获取值。

但是,您可以避免自己编写此代码。偶尔我会实现名为"enums"的库来执行此操作以及许多其他操作。看看 github 中的 https://github.com/alexradzin/enumus。

您也可以阅读我的文章"自定义值"。

最新更新