有人問到關於枚舉的問題,我想創建一個基於屬性的枚舉。我放棄了這個想法,因爲這個枚舉需要是動態的,如果我們得到一個新的錯誤代碼,它應該被添加到屬性文件中。 可悲的是我看不出用enum做到這一點,所以我選擇了不同的路徑,因爲我看到每個人都建議基於地圖的解決方案。我創建了一個只讀取屬性文件的單例,並對關鍵字進行響應以返回值,而不是使用枚舉。
屬性文件:
C102 = Blablabla1
C103 = Blablabla2
C104 = Blablabla3
單身代碼:
package mypackage;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map.Entry;
import java.util.Properties;
public class ResponseValidationTypeCodes {
private final HashMap<String, String> codes;
private static ResponseValidationTypeCodes instance;
public static ResponseValidationTypeCodes getInstance() {
if (instance == null) {
instance = new ResponseValidationTypeCodes();
}
return instance;
}
private ResponseValidationTypeCodes() {
super();
codes = new HashMap<String, String>();
initEntry();
}
private void initEntry() {
Properties prop = new Properties();
try {
prop.load(new FileInputStream(
"src/main/resources/validationcodes.properties"));
for (Entry<Object, Object> element : prop.entrySet()) {
codes.put(element.getKey().toString(), element.getValue()
.toString());
}
} catch (IOException ex) {
ex.printStackTrace();
}
}
public String getValueByCode(String code) {
return codes.get(code);
}
}
得到的值,只需撥打:
ResponseValidationTypeCodes.getInstance()
.getValueByCode("C102");
的初始屬性讀取只運行一次。所以,只需在發生某些更改時擴展該屬性,然後重新部署您的資料。我希望這對於那些願意使用一些替代枚舉的人有所幫助。
謝謝,我會試一試並回復給您。 – user373201 2011-02-05 22:55:25
非常感謝,不,我需要的是 – user373201 2011-02-06 00:13:46