26

JavaのPropertiesオブジェクトは、Java 5より前からあまり変更されておらず、ジェネリックスのサポートや非常に便利なヘルパーメソッド(クラスをプラグインしてプロパティを処理したり、ディレクトリ内のすべてのプロパティファイルをロードしたりするための定義済みパターン)を備えていません。例)。

プロパティの開発は停止しましたか?もしそうなら、この種のプロパティの保存/読み込みの現在のベストプラクティスは何ですか?

それとも私は完全に何かを逃しましたか?

4

5 に答える 5

11

プロパティに関する多くの概念は間違いなく古く、疑わしいものです。それは非常に貧弱な国際化を持っています、それは今日ジェネリック型を介して達成されるであろうメソッドを追加します、それはその同期が限られた価値でありそしてそれと調和していないメソッドを持っているのでそれ自体は一般的に使用されていないハッシュテーブルを拡張します1.2で導入されたコレクションクラス、およびプロパティクラスに追加されたメソッドの多くは、基本的に、ジェネリックに置き換えられる種類の安全性を提供します。

今日実装された場合、それはおそらくの特別な実装でありMap<String, String>、プロパティファイルでより良いエンコーディングを確実にサポートします。

そうは言っても、複雑さを増さない代替品は実際にはありません。確かに、java.util.prefs.Preferences apiは「新しく改善された」ものですが、多くのユースケースで必要とされるものをはるかに超える複雑さの層を追加します。XMLを使用することもオプションです(少なくとも国際化の問題を修正します)が、プロパティオブジェクトは多くの場合、ニーズにうまく適合し、その時点でそれを使用します。

于 2010-03-01T20:15:52.993 に答える
7

これは、単純な構成要件に対しては依然として実行可能なソリューションです。プロパティのキーと値は本質的に文字列であるため、ジェネリックスのサポートは必要ありません。つまり、フラットなASCIIファイルに保存されます。オブジェクトのアン/マーシャリング/シリアル化が必要な場合、プロパティは適切なアプローチではありません。適度に洗練された構成のニーズを超えたものについては、現在、推奨される方法はjava.util.prefs.Preferencesです。

于 2010-03-01T20:09:13.920 に答える
3

「ジェネリックスのサポートがありません」なぜジェネリックスのサポートが必要なのですか。文字列キーと文字列値を処理します。Javaプロパティが非推奨とは見なされません。それは成熟した図書館です-それだけです

于 2010-03-01T20:13:33.493 に答える
3

それはそれがする必要があることをします。ディレクトリ内のすべてのプロパティファイルを読み取るためのサポートを作成するのはそれほど難しくありません。これは一般的なユースケースではないと思いますので、JDKに含める必要があるものとは考えていません。

また、Javadocによると、を拡張Hashtable<Object, Object>および実装しているため、Java5より前からわずかに変更されていますMap<Object, Object>

于 2010-03-01T20:10:11.857 に答える
1

辞書構造は、ほとんどのプログラミング言語http://en.wikipedia.org/wiki/Associative_arrayで最も古くから使用されている構造の1つであり、非推奨になるとは思えません。

削除されたとしても、コアの外にすぐに新しい実装があります。

すでに外部拡張機能があります。ApacheCommonsは、長年にわたってJavaを形作るのに役立ったと思う素晴らしいリソースです。http://commons.apache.org/configuration/howto_properties.htmlを参照してください。

于 2010-03-01T20:07:24.287 に答える