0

完璧なJavaコードを書きたいので、この質問をさせてください。

String次のように、メソッドで変更されない変数を使用したいと思います。

1. String STR4SEARCH_START = "Abc";

また、メソッドで定義することもできます。変更する必要がないため、クラスで次のように定義することもできます。

2. private final String STR4SEARCH_START = "Abc";
3. private static final String STR4SEARCH_START = "Abc";
4. public final String STR4SEARCH_START = "Abc";
5. public static final String STR4SEARCH_START = "Abc";

これが私の質問です:way1-way5から、どれが最高ですか、そしてその理由を説明していただけますか?

どうもありがとうございます。

4

3 に答える 3

5

場合によります。他の人(クラス外)がそれを表示できるようにしたい場合は、publicnotを使用しますprivate。その逆も同様です。それ以外は、static finalあなたが言ったように、本質的に不変の定数を定義したいので、私は確かに使用します。staticクラスのインスタンス化ごとに異なる値は必要なく、finalその値は変更されないためです。

于 2012-09-14T02:16:24.923 に答える
1

変更されることはないため、すべてのクラスインスタンスで複数のコピーを作成する必要はありません。静的にします。

繰り返しになりますが、変更されることはないので、finalにして、コードが変更しようとした場合にコンパイラーがエラーを報告するようにします。(実行時のパフォーマンス上の利点もあるかもしれません)。

パブリックにするかプライベートにするかは、他のクラスに公開する必要があるかどうかによって異なります。プライベートを優先し、必要な場合にのみパブリックにします。

したがって、プライベート静的ファイナルまたはパブリック静的ファイナル(必要な場合)のいずれかです。

于 2012-09-14T02:19:16.547 に答える
0
I want to use a never change String variable 

要件に応じて、ConstantCodes.javaというクラスを作成することをお勧めします。このクラスは、これらすべての種類の変数を格納します。その中で変数を次のように宣言できます。final値は変更されないため、変数を宣言できます。

public class ConstantCodes 
{
     public static final String STR4SEARCH_START = "Abc";
     ...
     ...
}

この変数には、以下のような任意のクラスから直接アクセスできます。

String myNewVariable = ConstantCodes.STR4SEARCH_START;
于 2012-09-14T02:22:30.267 に答える