[英]enum getter returning wrong value
我有一個枚舉類型
public enum Type {
A("abc1", "desc1"),
B("abc2", "desc2"),
C("abc3", "desc3"),
D("abc4", "desc4"),
E("abc5", "desc5");
private String value;
private String description;
private Type(String value, String description) {
this.value = value;
this.description = description;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}
我通過以下代碼從枚舉中獲取值
Type[] type = Type.values();
for (int i = 0; i < type.length; i++) {
System.out.println(type[i].getValue());
}
此代碼在服務器上運行。 幾天來,它運行良好,此代碼的輸出如下:
abc1
abc2
abc3
abc4
abc5
但是幾天后,輸出更改為
abc1
abc2
abc1
abc4
abc5
如果我打印說明,那么它們總是正確的。
我無法弄清楚為什么Type.getValue()返回枚舉值C的枚舉值A的值。
您的枚舉是可變的; 有些東西正在調用setValue()
。
您應該使您的枚舉不可變 -這樣做很有意義。 通過將字段定為最終值並放棄二傳手來使其不可變:
public enum Type {
A("abc1", "desc1"),
B("abc2", "desc2"),
C("abc3", "desc3"),
D("abc4", "desc4"),
E("abc5", "desc5");
private final String value;
private final String description;
private Type(String value, String description) {
this.value = value;
this.description = description;
}
public String getDescription() {
return description;
}
public String getValue() {
return value;
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.