介紹
Java枚舉類是一種特殊的類,用於表示一組常量。它們在Java程序中非常有用,因為它們允許您將一組預定義的常量聚合在一起,並將它們視為單個實體。這樣,可以減少代碼量並提高代碼可讀性。
正文
一、定義枚舉類
定義枚舉類非常簡單,只需要使用關鍵字「enum」:
public enum Weekday {
MONDAY,
TUESDAY,
WEDNESDAY,
THURSDAY,
FRIDAY,
SATURDAY,
SUNDAY
}
這裡定義了一個枚舉類Weekday,包含了一周中的所有星期幾。其中,MONDAY、TUESDAY等都是常量,它們的類型是Weekday,每個常量都用逗號分隔。
二、枚舉類中的方法
在枚舉類中,您可以定義構造函數、普通方法和靜態方法。
1. 構造函數
與普通類一樣,您可以在枚舉類中定義構造函數。每個枚舉常量都是枚舉類的實例,因此您可以像普通類一樣使用構造函數來初始化每個枚舉常量。下面的例子展示了如何定義一個帶有參數的構造函數:
public enum Weekday {
MONDAY("星期一"),
TUESDAY("星期二"),
WEDNESDAY("星期三"),
THURSDAY("星期四"),
FRIDAY("星期五"),
SATURDAY("星期六"),
SUNDAY("星期日");
private String chineseName;
Weekday(String chineseName) {
this.chineseName = chineseName;
}
public String getChineseName() {
return chineseName;
}
}
這裡添加了一個帶有一個參數的構造函數,用於為每個枚舉常量設置中文名字。在定義枚舉常量時,需要傳入參數,如MONDAY(“星期一”)。
2. 普通方法
在枚舉類中,您可以添加普通方法,使用方式與普通類類似。例如,在上面的Weekday枚舉類中,我們定義了一個名為getChineseName的方法,用於獲取中文名字。
3. 靜態方法
除了普通方法之外,您也可以定義靜態方法。靜態方法僅與當前枚舉類有關,而不與任何枚舉常量實例有關。例如:
public enum Weekday {
MONDAY,
TUESDAY,
WEDNESDAY,
THURSDAY,
FRIDAY,
SATURDAY,
SUNDAY;
public static Weekday getRandomDay() {
return values()[(int) (Math.random() * values().length)];
}
}
在這個例子中,我們定義了一個名為getRandomDay的靜態方法,用於返回一個隨機星期幾。
三、枚舉類的常用方法
Java提供了一些常用的枚舉類方法,我們可以使用它們來操作枚舉常量。
1. values()方法
Java編譯器會為每個枚舉類型生成一個values()方法。這個values()方法可以返回存儲在枚舉類型中的所有枚舉常量數組。比如:
Weekday[] weekdays = Weekday.values();
這裡我們使用values()方法獲取Weekday枚舉類中的所有常量,並將它們存儲在數組中。
2. valueOf()方法
valueOf()方法用於根據字元串獲取枚舉常量。如果您有一個字元串,想要獲取對應的枚舉常量,可以調用這個方法。例如:
Weekday weekday = Weekday.valueOf("MONDAY");
在這個例子中,valueof()方法會返回MONDAY枚舉常量。
3. ordinal()方法
ordinal()方法用於獲取枚舉常量的索引,即它們在常量數組中的位置。例如:
int index = Weekday.MONDAY.ordinal();
在這個例子中,ordinal()方法會返回0,表示MONDAY是Weekday枚舉類型中的第一個常量。
4. name()方法
name()方法用於獲取枚舉常量的名稱。例如:
String name = Weekday.MONDAY.name();
在這個例子中,name()方法會返回字元串”MONDAY”。
四、小結
使用枚舉類可以讓代碼更加簡潔、明了,而且Java在枚舉類上提供了許多不同的方法,可以用於操作枚舉常量。在實際編程中,枚舉類是非常有價值的。
代碼示例
public enum Weekday {
MONDAY("星期一"),
TUESDAY("星期二"),
WEDNESDAY("星期三"),
THURSDAY("星期四"),
FRIDAY("星期五"),
SATURDAY("星期六"),
SUNDAY("星期日");
private String chineseName;
Weekday(String chineseName) {
this.chineseName = chineseName;
}
public String getChineseName() {
return chineseName;
}
public static Weekday getRandomDay() {
return values()[(int) (Math.random() * values().length)];
}
}
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/309934.html
微信掃一掃
支付寶掃一掃