0

アプリケーションにたくさんの文字列テキストを入れます。したがって、私はこれらすべての文字列を1つのクラスに含めると考えました。必要に応じて文字列を簡単に変更できるようにします。

public class MyMessage {

static final String NAME = "JOE";
static final String AGE = "21";
......

}

そして、MyMessage.NAMEやなどの他のクラスでアクセスしますMyMessage.AGE

1.)このアプローチは正しいですか?

2.)また、プロパティファイルを使用してこれを行うことができることもわかりました。これは本当ですか?(そして、これを行うための最良のアプローチは何ですかproperty fileまたはhaving static methods in a java class

4

4 に答える 4

3

はい、プロパティファイルを使用できます。通常、これはより適切なアプローチです。他のものとは別に、これにより、言語ごとに異なるリソースを取得できます。ResourceBundle詳細については、およびのドキュメントを参照してPropertyResourceBundleください。

リソースバンドルキーを維持するための型が必要な場合もありますが、個人的には、クラス内の定数ではなく列挙型にします。

于 2012-12-01T18:17:03.867 に答える
1

定数クラスファイル内の定数の値を変更する場合は、クラスを再コンパイルする必要があります。ただし、プロパティファイルを使用する場合は、これを行う必要はありません。したがって、プロパティファイルの方が適しています。

于 2012-12-01T18:17:47.517 に答える
1

それはあなたが本当に達成したいことによって少し異なります。プログラムのソースコードを変更せずに、新しい文字列を簡単に追加できるようにしますか?複数の言語をサポートしますか?それはあなたの実際の状況に依存します。

あなたが提案したこととは別に、一般的なアプローチはリソースバンドルを使用することです。これらは基本的に文字列をグループ化し、編集しやすくするために使用されます。彼らがサポートするもう1つの機能(これは必要ないかもしれません)は、複数の言語、つまりサポートする言語ごとに異なるリソースバンドルを持つことです。実際の文字列はプロパティファイルに保持されます。

これは良いチュートリアルです:http ://www.avajava.com/tutorials/lessons/how-do-i-read-a-properties-file-with-a-resource-bundle.html

于 2012-12-01T18:21:16.273 に答える
1

@invariantOtherは私のアプローチに同意しません。これについてのあなたのコメントは何ですか?

これらの値を変更する頻度によって異なります。1つの例で説明します。私のアプリケーションでは、この目的のために多くのクラスで米国の州名を使用する必要があります。クラスを作成することを好みます。

public class Juridictions {
public static final String OH = "OH";
public static final String CA = "CA";
..

}
   //when ever i need
   if(localvalue.equals(Juridictions.CA) {
   system.out.println("you are from CA !");
}

このユースケースでプロパティファイルアプローチを使用する(状態名は変更されないと思います!)のは 時期尚早の最適化です(上記のアプローチよりも必要なときに値を使用するよりもファイルから読み取るためにより多くのコードが必要になるため)

値を変更する頻度がわからない場合は、疑問がある場合はそれを省略してください。

于 2012-12-01T19:19:30.987 に答える