这个问题密切相关, 我刚才的问题上SO有关使用接口枚举 。 从本质上讲,我有一堆密切相关枚举的,他们都实现一个共同的接口。
的接口被称为Sections
和枚举被称为SectionA
, SectionB
等我有有像领域其他类List<Sections>
和Map<Sections, String>
。 现在,来填充这些领域,我想有机会获得valueOf(String)
,也就是我想能够这样说
Map<Sections, String> sectionsMap = new HashMap<Sections, String>();
for (String s : someStringList) {
try {
sectionsMap.put(Sections.valueOf(s), someOtherFunctionReturningString(s));
} catch (IllegalArgumentException e) {
e.printStackTrace(); // if s doesn't match any enum
}
}
我也有在枚举我自己的静态方法SectionA
, SectionB
,等等(这是因为这些枚举都有一个单一java.util.regex.Pattern
场,和我的静态方法是一个泛化valueOf(String)
方法基于模式匹配)。
所以,我的问题是这样的:
我怎样才能继续访问这些枚举的静态方法,同时在接口水平上具有自己的推广?
我打开其他的设计决定(其实,我目前摆脱整体的enum
的想法和创造实现类Sections
和扩展一个抽象类AbstractSection
),但我很好奇别人怎样在类似的情况下作出决定。 我也问过,希望有人在那里有比那些在我的脑海更好的想法这个问题。