我一直试图通过在枚举构造函数中插入属性文件中的键来加载字符串值,但它不是设置值,而是只设置键。
我的errorcodes.properties有这个内容error.id.required.message=Id is required to get the details. error.id.required.code=110
和枚举文件是这样的:
`public enum ErrorCodes {
ID_REQUIRED("error.id.required.message",
"error.id.required.code"),
ID_INVALID("error.id.invalid.message",
"error.id.invalid.code");
private final String msg;
private final String code;
private ErrorCodes(String msg, String code) {
this.msg = msg;
this.code = code;
}
public String getMsg() {
return msg;
}
public String getCode() {
return code;
}
}`
所以我创建了一个异常,它将上面定义的枚举之一作为参数,并抛出一个自定义异常,消息为“需要ID来获取细节”,代码为“110”。
例如,throw new CustomException(ErrorCodes.ID_REQUIRED)
但得到的回应却是
"errorCode": "error.id.required.code"
"errorMessage": "error.id.required.message"
帮帮忙!谢谢。
2条答案
按热度按时间hgb9j2n61#
一般来说,像这样使用
Enum
不是个好主意,记住,枚举的常量是单例的,因此你不能像这样使用它。我认为最好有单独的类,在那里你可以封装这个逻辑:
Enum
并仅从文件中检索相关数据Map
,以便按ErrorCode
保存message
和code
ErrorCode
检索message
和code
的吸气器ErrorCode
和ErrorCodeStore
应位于同一软件包中这是一个枚举
ErrorCode
:这是
ErrorCodeStore
:6bc51xsx2#
若要修复此问题,必须加载属性文件,并使用传递给枚举构造函数的键检索值。
您可以使用java.util.Properties类加载属性文件并检索值。下面是一个示例,说明如何修改代码以从属性文件加载值:
通过这种方式,枚举构造函数获取属性的键并使用它从属性文件中查找值。
顺便说一句,您还应该确保
errorcodes.properties
位于应用程序的类路径中。