一、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