我有一个有趣的要求,我们有大量的枚举形式
public enum BpcCmsError {
ERROR_TYPE_1("Error message 1"),
ERROR_TYPE_2("Error message 2"),
ERROR_TYPE_3("Error message 3");
private int errorCode;
private final String errorMessage;
public static final int ERRORCODE_BASE = 100;
我需要分配一些唯一的错误代码,从一个数字开始并向上计数,所以我有一个构造函数:
private BpcCmsError(String message) {
this.errorMessage = message;
}
和一个静态块
static {
int code = ERRORCODE_BASE;
for (BpcCmsError error : EnumSet.allOf(BpcCmsError.class)) {
error.errorCode = ++code;
}
}
效果很好。
但是,我需要一些额外的灵活性来分配这些错误代码,理想情况下是这样的:
ERROR_TYPE_1("Error message 1"),
ERROR_TYPE_2("Error message 2"),
ERROR_TYPE_3(200,"Error message for code");
意图是 2-args 构造函数会导致后续错误代码从第一个参数的值开始。在我的情况下,错误代码将是 100、101、200、201 等。当然我需要检查是否应该允许这种跳转,例如,我们可能已经数过了 200。关于如何在 Java 中使用枚举来实现这一点的任何提示?