Java中的枚舉類是一個常用的數據結構,它可以讓代碼更加清晰、易於維護。本文將從多個方面詳細介紹Java枚舉類的使用。
一、枚舉類的定義
在Java中,枚舉類(Enum Class)是一種特殊的類,它可以定義一組有限的常量。枚舉類的定義形式如下:
public enum Color {
RED, GREEN, BLUE;
}
上述代碼定義了一個Color枚舉類,包含了三個常量:RED、GREEN、BLUE。枚舉類裡面的每個常量都是一個枚舉實例,它們與類的靜態變量類似,不同的是枚舉實例的數量是固定的。
枚舉類可以定義在單獨的文件中,也可以定義在類中。如果它是在單獨的文件中定義的,它的文件名必須與枚舉類的名稱相同。
二、枚舉類的方法
枚舉類可以使用方法,這使得它們比常量更加靈活。枚舉類可以定義構造方法、普通方法和抽象方法。
1. 枚舉類的構造方法
與普通類一樣,枚舉類也可以定義構造方法。在枚舉常量被創建時,枚舉類的構造方法將被調用。
public enum Color {
RED("紅色"), GREEN("綠色"), BLUE("藍色");
private String name;
Color(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
上述代碼定義了一個Color枚舉類,每個枚舉常量都有一個對應的名稱。在創建枚舉常量時,我們需要傳入一個名稱,這個名稱需要在構造方法中進行初始化。
2. 枚舉類的普通方法
枚舉類可以包含普通方法,這使得我們可以在枚舉類中定義一些業務邏輯。
public enum Color {
RED, GREEN, BLUE;
public String toLowerCase() {
return name().toLowerCase();
}
public String toUpperCase() {
return name().toUpperCase();
}
}
上述代碼定義了兩個普通方法 toLowerCase 和 toUpperCase,它們分別將枚舉常量的名稱轉換為小寫和大寫。
3. 枚舉類的抽象方法
枚舉類可以定義抽象方法,這使得我們可以創建一個枚舉類的集合,每個枚舉常量可以複寫集合中的抽象方法,來完成特定的任務。
public enum Shape {
RECTANGLE {
public double area(double width, double height) {
return width * height;
}
},
CIRCLE {
public double area(double radius) {
return Math.PI * radius * radius;
}
};
public abstract double area(double... dimensions);
}
上述代碼定義了一個 Shape 枚舉類,它有兩個常量:RECTANGLE 和 CIRCLE,分別代表矩形和圓形。每個常量都重寫了枚舉類中的 area 方法,來計算各自的面積。
三、枚舉類的遍歷
Java中的枚舉類還提供了一些遍歷常量的方法,其中最常用的是 values() 方法。
public enum Color {
RED, GREEN, BLUE;
}
public class Main {
public static void main(String[] args) {
for (Color c : Color.values()) {
System.out.println(c);
}
}
}
上述代碼演示了如何使用 values() 方法遍歷一個枚舉類的所有常量。
四、枚舉類與 switch 語句
Java中的 switch 語句可以與枚舉類一起使用,以更清晰地表示代碼的意圖。
public enum Color {
RED, GREEN, BLUE;
}
public class Main {
public static void main(String[] args) {
Color color = Color.RED;
switch (color) {
case RED:
System.out.println("紅色");
break;
case GREEN:
System.out.println("綠色");
break;
case BLUE:
System.out.println("藍色");
break;
default:
System.out.println("未知顏色");
break;
}
}
}
上述代碼演示了如何使用枚舉類與 switch 語句結合,以便以更清晰的方式表示代碼的意圖。
五、枚舉類的比較
Java中的枚舉類可以使用 == 運算符進行比較,這使得代碼更加簡潔。
public enum Color {
RED, GREEN, BLUE;
}
public class Main {
public static void main(String[] args) {
Color c1 = Color.RED;
Color c2 = Color.RED;
if (c1 == c2) {
System.out.println("c1 和 c2 相等");
}
}
}
上述代碼演示了如何使用 == 運算符比較枚舉常量的值。
六、參考資料
1. Java 枚舉類型教程 – https://www.runoob.com/java/java-enum.html
2. Java 枚舉類 – https://www.w3cschool.cn/java/java-enum.html
3. Java 枚舉 – https://www.yiibai.com/java/java_enumeration.html
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/231432.html
微信掃一掃
支付寶掃一掃