天天看點

enum實作類似反射的功能

背景是這樣的:一個流程包含多個節點,比如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