2017-08-01 5 views
2

私は最終的なフィールドではなく、最終フィールドであるRequestクラスを持っています。Javaクラスでの定数の使用

これは1つのタイプのリクエストに対してのみ使用されます。 しかし、 に送信されるサービス は、操作の種類を区別するためのコードが必要です。 私はRequestクラスで毎回初期化される定数を作成しました。たとえば :

public class Request { 

    @JsonProperty("const") 
    private static final String CONSTANT = "field" 

    @JsonProperty("data") 
    private int data; 

    public String getConstant() { 
     return CONSTANT; 
    } 

    public int getData() { 
     return this.data; 
    } 
} 

私はそれは決して変わらないという事実にもかかわらず 、コンストラクタの内部でそれを初期化するか、明示的にコンストラクタのパラメータとして操作コードを使用して考えました。 それは静的最終であるべきですか?

質問は、 この場合のベストプラクティスは何ですか?

+0

コード化された現在の方法に問題はありません。 static finalはあなたが達成しようとしていることを行います。 – ja08prat

+1

public static final String CONSTANT = "field"として定義し、どこでもRequest.CONSTANTとして参照できるようにする方が良いでしょうか?あなたはそれのためにゲッターを必要としません。 – deepakl

答えて

2

静的および最終の2つの完全に異なるものである:finalとしてフィールドを宣言

staticは、特定のタイプのすべてのインスタンス(objects)間で共有されているもののために使用されるべきである(class

が保証されますフィールドは定数であり、変更することはできません。

あなたのケースでは、すべてのインスタンス間で変数を共有することに問題はないので、static finalと宣言することはベストプラクティスには問題ありません。

0

このようなフィールドの場合は、列挙定数を使用し、ConstantフィールドをConstructor/Builderパターンで初期化することをお勧めします。そのような一定のフィールドには、Getterメソッドのみを提供します。

関連する問題