三分鐘學會java枚舉類

什麼是枚舉 what

枚舉類enum是jdk1.5引入的,全稱enumeration,和class、interface的地位一樣,存在java.lang包中

什麼時候使用枚舉 when

當變量的值在一個固定的範圍內變化時,建議優先使用枚舉

爲什麼使用枚舉 why

正常我們聲明常量時

public static final String SEASON_SPRING = "春天";
public static final String SEASON_SUMMER = "夏天";
public static final String SEASON_AUTUMN = "秋天";
public static final String SEASON_WINTER = "冬天";

使用枚舉時

public enum Season{
	SPRING,SUMMER,AUTUMN,WINTER
}

使用枚舉更加直觀,更加安全,枚舉類爲每個實例自動添加了public static final修飾符。

如何使用枚舉how

最簡單的枚舉就像上面代碼那樣,在需要使用的地方就可以直接引用了,你沒聽錯,直接Season.SPRING就能拿到這個實例,不用new。

其次,我們還可以爲每個實例增加屬性值,注意實例名稱必須寫在第一行

public enum Season{
	SPRING("春天"),
	SUMMER("夏天"),
	AUTUMN("秋天"),
	WINTER("冬天");

	private final String name;

	Season(String name){
		this.name = name;
	}

	public String getName() {
        return name;
    }
}

再者,我們還可以在枚舉類中聲明接口,每個實例都需要重寫該接口

public enum Season{
    SPRING("春天") {
        @Override
        public String hello(String str) {
            return "春天" + str;
        }
    },
    SUMMER("夏天") {
        @Override
        public String hello(String str) {
            return "夏天" + str;
        }
    },
    AUTUMN("秋天") {
        @Override
        public String hello(String str) {
            return "秋天" + str;
        }
    },
    WINTER("冬天") {
        @Override
        public String hello(String str) {
            return "冬天" + str;
        }
    };

    abstract String hello(String str);

    private final String name;

    Season(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }
}

此時,Season作爲一個接口,每個實例則是Season的匿名內部類
在這裏插入圖片描述

當然,枚舉類也可以在switch中使用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章