2014-03-25 35 views
0

在java中我通常會設置一個enum如下Groovy的枚舉保護性

public enum MealType { 

    BREAKFAST("Breakfast"), 
    LUNCH("Lunch"), 
    DINNER_OPEN("Dinner Cafeteria Open"), 
    DINNER_CLOSED("Dinner Cafeteria Closed"); 

    private String label; 

    private MealType(String label) { 
    this.label = label; 
    } 

    public String getLabel() { 
    return label; 
    } 
} 

這工作了好,因爲現在我的枚舉有一個很好的人類可讀標籤,該標籤是正常情況下不可改變的。例如,我不能這樣做:MealType.BREAKFAST.label = "fred"

但是,當我嘗試在Groovy中做同樣的事情時,getters和setter會自動生成。現在我創建了不想要的方法。 MealType.BREAKFAST.label = "fred"會導致枚舉標籤被更改。

回答

3

聲明標籤作爲final防止設定器產生:

enum MealType { 
    BREAKFAST("Breakfast"), 
    LUNCH("Lunch"), 
    DINNER_OPEN("Dinner Cafeteria Open"), 
    DINNER_CLOSED("Dinner Cafeteria Closed"); 

    final String label; 

    MealType(String label) { 
    this.label = label; 
    } 
}