2017-08-01 61 views
2

我有一個請求類與一些最後的而不是最終字段。在Java類中常量的使用

它只用於一種類型的請求。 但是,發送給它的服務 需要代碼來區分操作的類型。 我創建了一個常量,每次都使用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

將公共靜態final String CONSTANT =「field」定義爲Request.CONSTANT,然後到處可以引用。你不需要吸氣劑。 – deepakl

回答

2

靜態和最後是兩個完全不同的東西:

static應該用於在跨越特定類型(class

聲明的字段作爲final的所有實例(objects)共享的東西將確保該領域是一個常數,不能改變。

就你而言,在所有實例中共享變量沒有問題,因此根據最佳實踐將其聲明爲static final不會成爲問題。

0

對於這樣的領域,我寧願使用枚舉常量並通過構造器/構建器模式初始化常量字段。只爲這樣的CONSTANT字段提供Getter方法。