我有一个我无法修改的枚举,并希望为其添加更多属性

时间:2015-08-27 11:47:27

标签: java enums

我有一个enum

public enum {
first("prop1", "prop2"), second("prop1", "prop2")
}

我不能修改上面的课程。

现在我想再向同一个enum

添加一个属性
public enum {
first("prop1", "prop2", "prop3"), second("prop1", "prop2", "prop3")
}

如何实现这一目标?

3 个答案:

答案 0 :(得分:3)

添加属性需要修改。如果您无法修改enum,则无法向enum添加属性。

如果您想将新属性与无法修改的旧版enum相关联,可以使用EnumMap<E,T>执行此操作:

public enum TestEnum {
    first("prop1", "prop2"), second("prop1", "prop2")
}
...
EnumMap<TestEnum,String> prop3 = new EnumMap<TestEnum,String>(TestEnum.class);
prop3.put(TestEnum.first, "FirstProp3");
prop3.put(TestEnum.second, "SecondProp3");

而不是

TestEnum tst = ...
String p3 = tst.prop3();

你需要写

TestEnum tst = ...
String p3 = prop3.get(tst);

答案 1 :(得分:3)

您可以做的是添加EnumMap。这不会修改原始类,但允许您指定其他属性。

static final Map<MyEnum, String> prop3 = EnumMap.of(MyEnum.class);
static {
    prop3.put(first, "prop3");
    prop3.put(second, "prop3");
}

要获得此属性,您可以查找

String p3 = prop3.get(myEnum);

答案 2 :(得分:1)

希望这是你需要的

public enum {
first("prop1", "prop2", "prop3"), second("prop1", "prop2", "prop3"), third("prop1", "prop2", "prop3")

}