4

問題文

Java プロジェクト全体でアクセスされるプロパティ ファイルがあります。

.properties私のファイルの内容の例:

appName=MyApp
appType=TypeA

appNameJava プロジェクト全体で、単一のプロパティ にアクセスするとします。

props.getProperty("appName");

プロパティ値を取得するためにプロパティ ファイルを反復処理したくありません。プロパティ ファイルから 1 つのプロパティ値を取得しているだけです。しかし、ハードコードされた文字列を使用してプロパティにアクセスしなければならないという事実は好きではありません。メンテナンスの問題 (つまり、ハードコードされた文字列のすべてのインスタンスの変更) が発生する可能性があるためです。

私の現在のアプローチ

私の現在のアプローチでは、プロパティ ファイル内のキー名を表す static final 変数を作成するユーティリティ クラスがあり、その変数を使用してプロパティ値にアクセスします。

public static final String APP_NAME = "appName";
...
props.getProperty(APP_NAME);

しかし、これは冗長であり、メンテナンス上の懸念が残る可能性があるため、やり過ぎのように思えます。キーはプロパティ ファイルに既に存在し、ユーティリティ クラスで再度宣言しています。

get メソッドを使用してプロパティ値にアクセスするときに、コード内のキー名にアクセスするための「メンテナンス フリー」な方法はありますか?

4

3 に答える 3

1

プロパティ ファイルを読み取り、getter を含むソース ファイルに生成するライブラリが存在する場合があります。次に、そのソース ファイルをコードでコンパイルする必要があります。それはかなり気の利いたライブラリになります。でも、これが無ければ仕方がないと思います。

存在したとしても、それが であり であるとどのように知ることkey1ができるのかわかりません。おそらくどこかにキャストする必要があります。それか、別のメタデータ ファイルを維持してから、より多くのメンテナンスに戻ります。 Stringkey2Integer

問題は、プロパティ ファイルのキーをいつでも変更できることです。コンパイラは、変更を行ったことを知る方法がありません。

私が提供できる最高のものは、構成ファイルを読み取るためのライブラリです。Apache 構成ライブラリを確認してください。

于 2013-07-18T00:11:53.120 に答える