6

以前は、アプリケーション用のカスタム設定クラスがありました。私の次の趣味のプロジェクトでは、Preferences API に切り替えたいと考えていました。しかし、put 関数と get 関数にはデフォルト値が必要であり、ソース ファイル全体にデフォルト値を広げたくありません。私のプロジェクトは小さいですが、ソースコード全体でデフォルト値を変更することは想像できません. 皆さんはAPIをどのように使っていますか? 設定 API を別のクラスにラップすることを考えていますが、ファイルをディスクに保存する負担を取り除くだけなので、API を使用する意味は何ですか? 私は要点を逃していますか?

4

4 に答える 4

2

次に、を実装することにより、プリファレンスが目的のストレージにどのように従うかを完全に制御したい場合がありますAbstractPreferences。ここでLinuxベースの実装を見ることができます:

http://www.docjar.com/html/api/java/util/prefs/FilePreferencesImpl.java.html

幸運を!

于 2011-12-08T10:35:31.033 に答える
2

ここでいくつかの概念を混ぜています。コードで指定されたデフォルトは、「合理的なデフォルト」としてローカルの状況に固有のものにする必要があります。アプリケーション全体のデフォルトが必要な場合は、デフォルトの設定とオーバーレイされたユーザー設定の両方をフックできる設定プロバイダーが必要です。それ自体が価値のあるプロジェクトになるかもしれない何か。

ああ、「合理的なデフォルト」は、必要のないときに構成を回避するための優れた方法ですが、必要に応じてユーザーまたはパッケージャーがより良い値を提供できるようにします。

@コメント、私は理解していると思います。

「ローカルな状況」とは、コードのコンテキストを意味します。GUI では、スレッドが使用しているものを表す表示用の値が必要です。したがって、Worker.DEFAULT_TIMEOUT のようなものを使用します。ワーカーはデフォルトと同じ値を内部的に使用します。そうすれば、ワーカーの動作を設定するときに、構成された値またはワーカーのデフォルトを取得できます。

于 2008-10-20T19:50:25.563 に答える
1

デフォルト値は、.jar ファイル (または定数を含む特殊なクラスまたはインターフェイス) にバンドルする .preferences ファイルに入れることができます。

ウィンドウの位置やサイズ、ファイルを選択するためのデフォルト フォルダの記憶、最後に開いたファイルなどの雑学などに使用します。プリファレンス API を使用すると、「無料で」得られる興味深いものをいくつか思いつくことができます。

  • OSが推奨する方法で物事を行う; OS によっては、アプリ フォルダーに「設定ファイル」を書き込むことが許可されていない場合があり、ユーザーはディスク上のどこに設定を保存したいか尋ねられることを好みません。また、すべてのプラットフォームにカスタム ロジックを実装したくありません。
  • あなたのデータはOSユーザーごとに個別に保存されます
  • アプリケーションがアンインストールされた場合 (またはアップグレード中) にユーザー データを保持する方法
  • データベースやファイルシステムへのアクセスは必要ありません

また、私はシリアライズが好きではなく、これにはお勧めしません。シリアル化とは、アプリケーションの新しいバージョンでクラスを変更するときに注意する必要があることを意味します。

于 2010-06-17T23:22:06.187 に答える
1

すべてのデフォルトを 1 つのクラスに固定して、コードを散らかさないようにするのは難しいでしょうか?

最近のプロジェクトでコモンズ構成を使用しました。Java Preferences API を調べましたが、Commons プロジェクトの柔軟性が気に入っています。また、デフォルト値を指定する必要はありません!

于 2008-10-20T19:49:53.757 に答える