43

定数のみを持つJavaファイルを宣言するためのベストプラクティスは何ですか?

public interface DeclareConstants
{
    String constant = "Test";
}

また

public abstract class DeclareConstants
{
    public static final String constant = "Test";
}
4

5 に答える 5

93

どちらでもない。それらをfinal class for Constantsとして宣言し、public static final必要に応じてすべての定数を静的にインポートします。

public final class Constants {

    private Constants() {
            // restrict instantiation
    }

    public static final double PI = 3.14159;
    public static final double PLANCK_CONSTANT = 6.62606896e-34;
}

使用法 :

import static Constants.PLANCK_CONSTANT;
import static Constants.PI;//import static Constants.*;

public class Calculations {

        public double getReducedPlanckConstant() {
                return PLANCK_CONSTANT / (2 * PI);
        }
}

wikiリンクを参照してください:http://en.wikipedia.org/wiki/Constant_interface

于 2012-09-20T17:47:05.560 に答える
4

-フィールドを持つ を作成Classします。public static final

-そして、 を使用して、どのクラスからでもこれらのフィールドにアクセスできますClass_Name.Field_Name

-classを as として宣言できるfinalため、 をclass 拡張 (継承) および変更することはできません....

于 2012-09-20T17:52:26.173 に答える
1

どちらも有効ですが、私は通常インターフェースを選択します。実装がない場合、クラス (abstract または not) は必要ありません。

アドバイスとして、定数の場所を賢く選択してみてください。定数は外部契約の一部です。1 つのファイルにすべての定数を入れないでください。

たとえば、定数のグループが 1 つのクラスでのみ使用される場合、または 1 つのメソッドがそれらをそのクラス、拡張クラス、または実装されたインターフェイスに配置する場合。注意しないと、依存関係が大きく混乱する可能性があります。

列挙型が定数 (Java 5) の代わりになる場合があります。http: //docs.oracle.com/javase/1.5.0/docs/guide/language/enums.htmlをご覧ください

于 2012-09-20T18:18:15.800 に答える