2

有没有人想过什么是优越的,EnumMap或者Properties(或至少在我的情况下?)我正在使用第 3 方软件包,它使用他们的方法在我的代码和他们的应用程序之间进行通信,如下所示:

TheirRuntime.getInstance().getParameter(String paramName)

目前我已经创建了一个enum像这样工作的:

public enum MyEnum {
    FOO_BAR ("fooBar"), BAZ_QUUX ("bazQuux");

    private final String varName;
    private MyEnum(String varName) {
        this.varName = varName();
    }
    public String varName() {
        return varName();
    }
}

然后我将值存储在 中EnumMap<MyEnum, Double>,当用户更改某些内容时会更新。我的架构比这稍微复杂一些,但为了SSCCE,我省略了一些细节。虽然我会提到我使用以下内容加载值:

for (MyEnum me : MyEnum.values()) {
     TheirRuntime.getInstance().getParameter(me.varName());
}

我想知道的是,使用它会更有意义Properties吗?之所以出现这个问题,是因为我正在尝试构建一个根本不涉及 3rd 方软件的测试框架,并且我正在尝试寻找一种很好、简单的方法来加载不使用任何 3rd 的参数派对 API 调用,Properties文件似乎是一种简单的方法,这让我想知道我是否应该只Properties在主类中使用。

想法?

4

2 回答 2

2


枚举的好处很明显:
它为您提供枚举文字。您可以使用它们在编译级别捕获“错误密钥”问题。
属性允许您灵活 - 例如 - 您可以从文件中读取它们。
最大的问题是 - 你有多确定枚举提供的文字集是固定的,并且不会改变?
例如,我们的系统有一组枚举值,由于我们是一个开源项目,我们想在其上构建一个理论上应该使用枚举值的插件,
但插件编写者将无法使用原始枚举,因为它有一组固定的文字,所以我们要么将我们的枚举修改为属性对象,然后让插件编写者注册他们的“文字”,
或者我们必须为我们的枚举提供一个补充系统。
很抱歉,我在这里没有“明确”的解决方案。

于 2012-11-19T17:45:32.637 回答
1

使用 EnumMap 和普通 Properties (这也是一个 Map 在引擎盖下)之间的主要区别在于前者将强制执行可以存储在给定映射中的键的允许值,而 Properties 将允许对这些键使用任何字符串.

于 2012-11-19T17:44:50.377 回答