close

列舉在Java的功用通常是定義對應表或是常數

比較常見的用法在網路上都查的到

這邊打一個中文網站上比較少見的用法,就是當對應表使用

 

使用這個最大的好處是當你有好多地方用到這個對應表時

當對應表做了修改你不用把每個地方都改掉值

只要改掉列舉這一個地方全部地方會會自動改好

 

首先你需要定義enum的constructor以及這個enum的屬性及方法, 以下這個範例是用兩個屬性去做對應表

並且定義了一個方法getDescrByName,他可以用輸入的英文名稱(name)去查對應的中文名稱(desc)

public class Config {

        
    public enum Status{
        CANCEL("cancel","已取消"),
        REQUEST("request", "申請送出"),
        ASSIGN("assign", "已指定"),
        APPROVE("approve", "已同意");
        
        private String name;
        private String desc;
        
        Status(String name, String desc){
            this.name = name;
            this.desc = desc;
        }

        public static String getDescrByName(String name){
            String result = null;
            Status[] values = Status.values();
            for(Status value : values){
                if(value.getName().equals(name)){
                    result = value.getDesc();
                    break;
                }
            }
            return result;
        }
        
        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public String getDesc() {
            return desc;
        }

        public void setDesc(String desc) {
            this.desc = desc;
        }      
    }   

}

 

接著執行

public class Demo {

    public static void main(String[] args) {
        
        System.out.println(Config.Status.getDescrByName("cancel"));
        System.out.println(Config.Status.getDescrByName("request"));
        System.out.println(Config.Status.getDescrByName("assign"));
        System.out.println(Config.Status.getDescrByName("approve"));
    }

}

 

輸出結果為:

已取消

申請送出

已指定

已同意

 

列舉同樣可以利用jstl來建立servlet的下拉選單

<c:set var="statusList" value="<%=Config.Status.values()%>" />
    <select id = "status">
      <option>不指定</option>
      <c:forEach var="status" items="${statusList}">
              <option value="${status.getName()}">${status.getDesc()}</option>
       </c:forEach>                                    
     </select>

 

這樣的下拉選單如下

1.png

arrow
arrow
    文章標籤
    Java
    全站熱搜

    Dnight 發表在 痞客邦 留言(0) 人氣()