【问题标题】:EnumMap vs PropertiesEnumMap 与属性
【发布时间】:2012-11-19 17:36:44
【问题描述】:

有没有人想过什么是优越的,EnumMapProperties(或至少在我的情况下?)我正在使用第 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

想法?

【问题讨论】:

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


    【解决方案1】:


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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-23
        • 2013-10-15
        • 2011-11-29
        • 2015-08-17
        • 1970-01-01
        相关资源
        最近更新 更多