2

何が優れているかについて考えている人はいますか、EnumMapまたはProperties(または少なくとも私の状況では?)次のような方法を使用して、コードとアプリケーションの間で通信するサードパーティのソフトウェアパッケージを使用しています。

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

考え?

4

2 に答える 2

2


Enum の利点は明らか
です。列挙型リテラルを提供します。それらを使用して、コンパイルレベルで「間違ったキー」の問題をキャッチできます。
プロパティには柔軟性があります。たとえば、ファイルからプロパティを読み取ることができます。
大きな問題は、列挙型によって提供されるリテラルのセットが固定されており、変更されないことをどの程度確信していますか?
たとえば、私たちのシステムには一連の列挙値があり、私たちはオープンソース プロジェクトであるため、理論的には列挙値を使用する必要があるプラグインをその上に構築したいと考えていますが、
プラグイン作成者はそれができません。リテラルの修正セットがあるため、元の列挙型を使用します。そのため、列挙型をプロパティ オブジェクトに変更し、プラグイン作成者に「リテラル」を登録させます。
または、列挙型に補足システムを提供する必要があります。
ここに「明確な」解決策がないことを申し訳ありません。

于 2012-11-19T17:45:32.637 に答える
1

EnumMap とプレーンな Properties (これはフードの下のマップでもあります) の使用の主な違いは、前者は特定のマップに格納できるキーの許可された値を強制するのに対し、Properties はそれらのキーに任意の文字列を使用できることです。 .

于 2012-11-19T17:44:50.377 に答える