如何在Java spring启动应用程序中动态生成Enum类型?



在我的项目中,我们希望以Enum类型管理所有REST api错误码,如以下代码:

package com.example.util
public enum ErrorType{
SUCCESS("0000", "success")
PARAMS_EMPTY("3001", "params cannot be empty")
}

我们遇到的问题是,如果我们把类放入util包中,每次我们在业务春季启动应用程序中添加新的错误类型时,我们都需要修改,发布和重新编译应用程序和util项目。这将很难维护util包。基本上,我们更倾向于维护一个相对稳定的实用程序包。

所以我们正在考虑是否有一种方法可以动态地生成Enum类型,我们可以提前在mysql中配置错误信息,然后我们可以在应用程序启动过程中将它们加载到Enum类型。

我不确定在Java中动态生成枚举类型是否是个好主意,或者是否有更好的解决方案。

不能在枚举中添加或删除值。枚举是完整的静态枚举。

如果你需要处理变量值,你需要使用一个标准类。

例如,你可以这样写:

public Error {
public static Error getByName(String name) {
....
}
public static Error getByCode(int code) {
....
}
}

,并按如下方式使用:

Error myError404 = Error.getByCode(404);

显然这段代码给了你很大的灵活性,但是你不能提前知道一个特定的错误代码是否存在。并且不能使用与枚举相关的ide工具。

我认为生成枚举并不是那么有用,因为枚举的部分功能是您可以在代码中静态地使用它们-因此无论如何您都必须更新代码。

如何添加一个异常处理程序到您的util库,可以填充错误代码/描述映射从数据库,然后可以翻译错误/异常响应代码/错误消息为您的API?(只是猜测你在这里有一个API:-))

感谢您的回复,我们最终决定放弃这个想法。动态生成一个enum没有帮助,实际上它会给我们的项目增加更多的复杂性,这不是enum的常用用法。相反,我们预定义了主要的错误类型,如user_error、system_error和db_error等。具体的错误信息将在业务服务中处理。

相关内容

  • 没有找到相关文章

最新更新