gpt4 book ai didi

java - 如何扩展实现接口(interface)的枚举的静态方法?

转载 作者:太空宇宙 更新时间:2023-11-04 15:07:36 26 4
gpt4 key购买 nike

这个问题与my previous question on SO about using interface with enums密切相关。本质上,我有一堆密切相关的枚举,它们都实现了一个公共(public)接口(interface)。

该接口(interface)名为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) 方法的泛化。)

所以,我的问题是这样的:

如何保留对这些枚举的静态方法的访问,同时在接口(interface)级别实现它们的泛化?

我对其他设计决策持开放态度(事实上,我目前正在摆脱整个 enum 想法并创建实现 Sections 并扩展抽象类 AbstractSection 的类),但我很好奇其他人在类似情况下如何做出决定。我问这个问题是希望有人能比我的想法有更好的想法。

最佳答案

您不能重写静态方法。子类可以将静态方法命名为与父类(super class)相同的静态方法,但是 super 是一个非静态运算符。您可以有多个方法来执行两个不同的功能,但它们需要不同的名称。

关于java - 如何扩展实现接口(interface)的枚举的静态方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21789191/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com