EnumMap与属性

时间:2012-11-19 17:36:45

标签: java data-structures architecture properties enum-map

有没有人想过什么是优越的,EnumMapProperties(或至少在我的情况下?)我正在使用第三方软件包,使用他们的方法在我的代码和他们的应用程序之间进行通信像这样:

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会更有意义吗?这个问题已经出现,因为我正在尝试构建一个完全不涉及第三方软件的测试框架,而我正试图找到一个好的,简单的方法来加载不使用任何第三方的参数派对API调用,Properties文件似乎是一个简单的方法,这让我想知道我是否应该在主类中使用Properties

思想?

2 个答案:

答案 0 :(得分:2)


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

答案 1 :(得分:1)

使用EnumMap和普通属性(也是引擎盖下的Map)之间的主要区别在于前者将强制允许存储在给定映射中的键的值,而Properties将允许使用任何字符串对于那些钥匙。