枚舉

/*
 * 可以把 enum 看成是一個普通的 class,它們都可以定義一些屬性和方法,
 * 不同之處是:enum 不能使用 extends 關鍵字繼承其他類,因爲 enum 已經繼承了 java.lang.Enum。
 */
public enum EnumDemo{
	MON("星一",1), TUE("星二",2), WED("星三",3), THU("星四",4), FRI("星五",5), SAT("星六",6),SUN("星日",7),
	Red("紅",11){
      
	};
	
	String name;
	int index;
	EnumDemo(String name,int index){
		this.name=name;
		this.index=index;
	}
	
	public String getName(int index){
		for(EnumDemo e:EnumDemo.values()){
			if(e.index==index)return e.name;
		}
		return "wrong choice,please input numbers between 1 and 7";
	}
	
	public String getName(){
		return this.name;
	}
	
	public int getIndex(){
		return this.index;
	}
	
	/**
     * 獲取枚舉對象
     * @param key key值
     * @return enumDemo或null
     */
    public static EnumDemo getEnumDemoByCode(Integer key) {
        for (EnumDemo enumDemo : EnumDemo.values()) {
            if(key != null && key.intValue() == enumDemo.getIndex()){
                return enumDemo;
            }
        }
        return null;
    }
}

於vo中使用枚舉

public String getEnumDemoView() {
	if(key!=null) {
		EnumDemo enumDemo = EnumDemo.getEnumDemoByCode(key);
		if(enumDemo !=null){
			return enumDemo.getName();
		}
	}
	return enumDemoView;
}

EnumSet&&EnumMap

//EnumSet保證集合中的元素不重複;EnumMap中的 key是enum類型,而value則可以是任意類型。
	   EnumSet<EnumDemo> edset=EnumSet.allOf(EnumDemo.class);
	   for(EnumDemo ed:edset){
		 //  System.out.println(ed);
	   }
	   
	   EnumMap<EnumDemo,String> edmap=new EnumMap(EnumDemo.class);
	   edmap.put(EnumDemo.MON, "星期一");
	   for(Iterator it=edmap.entrySet().iterator();it.hasNext();){
		   Map.Entry<EnumDemo,String> m=(Map.Entry) it.next();
		   //System.out.println(it.next().toString());
		   System.out.println(m.getKey().index+";"+m.getValue());
	   }

注意:
枚舉類型會由JVM在加載的時候實例化枚舉對象,JVM爲了保證每一個枚舉類元素的唯一實例,把構造函數設計成private,以此防止用戶生成實例,破壞唯一性。
因此,當修改構造方法的訪問級別時,編譯器會報錯.當然,如果在構造器前面加上private.編譯器會提示我們redundant(多餘的).

發佈了35 篇原創文章 · 獲贊 5 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章