重新加载Java枚举

重新加载Java枚举,java,enums,classloader,Java,Enums,Classloader,我有一个应用程序,在启动时加载文件。加载文件时,会初始化一些枚举。初始化枚举时调用方法getTagGroupStartId。该方法采用“标记”的名称,该标记可能存在于加载的文件中,也可能不存在于加载的文件中。如果它不存在,则gettagroupstartid返回-1 所有这些都很好。当我加载另一个文件时会出现问题,该文件可能包含上一个文件不包含的“标记”,或者可能不包含上一个文件确实包含的“标记”。在这两种情况下,我都需要更新枚举中m_tagId的值,以便枚举反映当前文件的值。如何重新加载/重新

我有一个应用程序,在启动时加载文件。加载文件时,会初始化一些枚举。初始化枚举时调用方法
getTagGroupStartId
。该方法采用“标记”的名称,该标记可能存在于加载的文件中,也可能不存在于加载的文件中。如果它不存在,则
gettagroupstartid
返回
-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);
    }

    // ...

}

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

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

并在需要刷新时调用它。

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

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

并在需要刷新时调用它。

为什么要在新行中加上右括号?这使得代码非常不可读。我花了大约10秒钟才发现
{}
中的代码是构造函数的一部分。枚举在我的代码中是大量的,因此它更具可读性。我从我的代码中复制了它并消除了噪音,但没有改变这一点。现在已在此处修复。为什么要在新行上放置右括号?这使得代码非常不可读。我花了大约10秒钟才发现
{}
中的代码是构造函数的一部分。枚举在我的代码中是大量的,因此它更具可读性。我从我的代码中复制了它并消除了噪音,但没有改变这一点。现在在这里修复了它。并将
m_tagId
设为非
最终版
:)并将
m_tagId
设为非
最终版
:)