一、Switch枚舉簡介
Switch枚舉是Java中一種特殊的控制語句,用於根據一個枚舉類型的變量的值來選擇執行相應的代碼塊。它是一種在多個if-else語句中較有效的語句,代碼清晰易讀。
二、Switch枚舉基本語法
enum Season {
SPRING, SUMMER, AUTUMN, WINTER;
}
public class Main {
public static void main(String[] args) {
Season season = Season.SPRING;
switch (season) {
case SPRING:
System.out.println("春天");
break;
case SUMMER:
System.out.println("夏天");
break;
case AUTUMN:
System.out.println("秋天");
break;
case WINTER:
System.out.println("冬天");
break;
default:
System.out.println("季節輸入有誤!");
}
}
}
解釋:
首先定義了一個Season枚舉類型,其中包含四個常量:SPRING,SUMMER,AUTUMN,WINTER。
在主方法中,定義了一個season變量並賦值為Season.SPRING。接着,使用Switch語句對變量進行判斷,根據變量的值選擇執行相應的代碼塊。此處輸出”春天”。
當變量的值不在枚舉常量範圍內時,Switch語句會執行default中的代碼塊。
三、Switch枚舉中的Fall-Through效應
Switch語句在執行時,如果沒有break語句,將繼續向下執行,直到遇到break語句或者Switch語句結束。這種效應被稱為”Fall-Through”,有時候也可被使用,但是需要小心。
enum Status {
OK, WARNING, CRITICAL;
}
public class Main {
public static void main(String[] args) {
Status status = Status.WARNING;
switch (status) {
case OK:
System.out.println("OK");
case WARNING:
System.out.println("WARNING");
case CRITICAL:
System.out.println("CRITICAL");
default:
System.out.println("STATUS UNKNOWN");
}
}
}
解釋:
定義了一個Status枚舉類型,其中包含三個常量:OK,WARNING,CRITICAL。
在主方法中,定義了一個status變量並賦值為Status.WARNING。接着,使用Switch語句對變量進行判斷,根據變量的值選擇執行相應的代碼塊。
由於沒有break語句,程序將沿着Switch語句向下走。輸出內容為:
WARNING CRITICAL STATUS UNKNOWN
四、Switch枚舉展開
在JDK 7中,Java允許開發者使用Switch語句對枚舉類型進行展開,簡化代碼。
常規實現方式:
enum Direction {
EAST, SOUTH, WEST, NORTH
}
public class Main {
public static void direction(Direction direction) {
switch (direction) {
case EAST:
System.out.println("東");
break;
case SOUTH:
System.out.println("南");
break;
case WEST:
System.out.println("西");
break;
case NORTH:
System.out.println("北");
break;
default:
System.out.println("方向輸入有誤!");
}
}
public static void main(String[] args) {
Main.direction(Direction.EAST);
}
}
展開實現方式:
enum Direction {
EAST {
public void show() {
System.out.println("東");
}
},
SOUTH {
public void show() {
System.out.println("南");
}
},
WEST {
public void show() {
System.out.println("西");
}
},
NORTH {
public void show() {
System.out.println("北");
}
};
public abstract void show();
}
public class Main {
public static void main(String[] args) {
Direction.EAST.show();
}
}
解釋:
定義一個Direction枚舉類型,其中包含四個常量:EAST,SOUTH,WEST,NORTH。
在常規實現方式中,實現了一個方向方法,使用Switch語句進行變量判斷。在展開實現方式中,直接在Enum常量上定義show抽象方法,極大地簡化了代碼。
五、Switch枚舉中使用Interface
Java允許使用interface代替abstract類,方便在枚舉中使用多態。
interface Food {
void show();
}
enum Fruit implements Food {
APPLE, BANANA, ORANGE;
public void show() {
System.out.println(this.name());
}
}
public class Main {
public static void main(String[] args) {
Fruit.APPLE.show();
}
}
解釋:
定義一個Food接口,在Fruit枚舉類型中使用implements關鍵字代替abstract類。在枚舉常量上實現show方法。
由於接口的多態性,使用enum可以輕鬆實現多種類型使用同一接口的效果。
六、總結
Switch枚舉是Java中一種特殊的控制語句,使用極為靈活。需要小心Fall-Through效應,方便隨時在枚舉中添加、刪除、修改常規數據類型。Switch語句可以簡化代碼,使得代碼清晰易讀;展開實現方式更可以減少代碼量。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/305168.html
微信掃一掃
支付寶掃一掃