- 在某些情況下文虏,一個(gè)類的對象個(gè)數(shù)是有限且固定的坑填,如季節(jié)類裆泳,它只有春夏秋冬4個(gè)對象這種實(shí)例有限且固定的類,我們可以用枚舉類來表示蹋凝。
- 在 Java 中使用 enum 關(guān)鍵字來定義枚舉類鲁纠,其地位與 class、interface 相同仙粱;
- 枚舉類是引用數(shù)據(jù)類型房交,也有自己的成員變量彻舰、成員方法伐割、構(gòu)造器 (只能使用 private 訪問修飾符,所以無法從外部調(diào)用構(gòu)造器刃唤,構(gòu)造器只在構(gòu)造枚舉值時(shí)被調(diào)用)隔心;
- 所有的枚舉值都是 public static final 的,且非抽象的枚舉類不能再派生子類尚胞;
- 枚舉類的所有實(shí)例(枚舉值)必須在枚舉類的第一行顯式地列出硬霍,否則這個(gè)枚舉類將永遠(yuǎn)不能產(chǎn)生實(shí)例。列出這些實(shí)例(枚舉值)時(shí)笼裳,系統(tǒng)會自動添加 public static final 修飾唯卖,無需程序員顯式添加。
定義枚舉
// 定義一個(gè)星期的枚舉類
public enum WeekEnum {
// 在第一行顯式地列出7個(gè)枚舉實(shí)例(枚舉值)躬柬,系統(tǒng)會自動添加 public static final 修飾
SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY;
}
枚舉類的成員變量拜轨、成員方法、構(gòu)造器
public enum WeekEnum {
// 因?yàn)橐呀?jīng)定義了帶參數(shù)的構(gòu)造器允青,所以在列出枚舉值時(shí)必須傳入對應(yīng)的參數(shù)
SUNDAY("星期日"), MONDAY("星期一"), TUESDAY("星期二"), WEDNESDAY("星期三"),
THURSDAY("星期四"), FRIDAY("星期五"), SATURDAY("星期六");
// 定義一個(gè) private 修飾的實(shí)例變量
private String day;
// 定義一個(gè)帶參數(shù)的構(gòu)造器橄碾,枚舉類的構(gòu)造器只能使用 private 修飾
private WeekEnum(String day) {
this.day = day;
}
// 定義 get set 方法
public String getDay() {
return day;
}
public void setDay(String day) {
this.day = day;
}
}
常用方法
方法 | 描述 |
---|---|
String name() | 返回此枚舉常量的名稱 |
static values() | 返回一個(gè)包含全部枚舉值的數(shù)組,可以用來遍歷所有枚舉值(對象數(shù)組) |
static valueOf(Class]<T> enumType,String name) | 返回帶指定名稱指定枚舉類型的對象 |
單例模式可以使用枚舉
// 使用枚舉來實(shí)現(xiàn)單例模式的示例
public enum Singleton {
// 定義一個(gè)枚舉的元素,它就代表了Singleton的一個(gè)實(shí)例
uniqueInstance;
// 示意方法颠锉,單例可以有自己的操作
public void singletonOperation(){
//功能處理
System.out.println("aa=="+Singleton.uniqueInstance.hashCode());
}
}