我有一个enum
public enum {
first("prop1", "prop2"), second("prop1", "prop2")
}
我不能修改上面的课程。
现在我想再向同一个enum
public enum {
first("prop1", "prop2", "prop3"), second("prop1", "prop2", "prop3")
}
如何实现这一目标?
答案 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")
}