背景是這樣的:一個流程包含多個節點,比如create, logon, register等等。 有一個頁面用來顯示使用者經過了哪些流程以及發生時間等資訊,它的輸入是一個包含這些資訊的xml資料,需要根據locale,顯示不同的事件名稱(比如,create在英文下顯示create,而在中午下顯示“建立”。
一開始想用反射,但GWT不支援反射。if else太羅嗦,switch也不大順手,想到了enum。
枚舉類:
public enum EventTypes {
CREATE() {
@Override
public String getDesc() {
//code below gets localized property from EventMessages.properties in GWT
return EventMessages.INSTANCE.CREATE();
}
},
ACCEPT() {
@Override
public String getDesc() {
return EventMessages.INSTANCE.ACCEPT();
}
}
public abstract String getDesc();
}
調用的地方:
...
String event = "";//passed-in event name, string
return EventTypes.valueOf(event).getDesc();
Reference:
http://ajaxonomy.com/2007/java/making-the-most-of-java-50-enum-tricks