重新加载Java枚举

时间:2014-02-21 17:58:09

标签: java enums classloader

我有一个应用程序在启动时加载文件。加载文件时,会初始化一些枚举。当枚举被初始化时,调用方法getTagGroupStartId。该方法采用“标记”的名称,该标记可能存在或可能不存在于加载的文件中。如果它不存在,则getTagGroupStartId会返回-1

所有这一切都很好。当我加载另一个可能包含前一个文件不包含的“标记”的文件或者可能不包含前一个文件包含的“标记”时,会出现问题。在这两种情况下,我都需要更新枚举中的m_tagId值,以便枚举反映当前文件的值。如何重新加载/重新初始化枚举?

public enum ExampleEnum {

    FOO("FOO_"),
    BAR("BAR_"),
    BAZ("BAZ_");

    private final String m_tagName;
    private final int m_tagId;

    ExampleEnum(String tagName) {
        m_tagName = tagName;
        m_tagId = Tag.getTagGroupStartId(tagName);
    }

    // ...

}

1 个答案:

答案 0 :(得分:5)

将以下方法添加到枚举中:

public static void refreshAll() {
    for (ExampleEnum e : values()) {
        e.m_tagId = Tag.getTagGroupStartId(e.m_tagName);
    }
}

并在需要刷新时调用它。