介紹
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-hant/n/309934.html