什麼是枚舉 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中使用。