Java 列舉:switch 支援列舉
阿新 • • 發佈:2019-02-14
JDK1.5 才開始有列舉型別,同時可愛的 Java 組織豐富了 switch 語句:支援列舉。
定義一個列舉類 Color
public enum Color { RED("red color", 0), GREEN("green color", 1), BLUE("blue color", 2), YELLOW("yellow color", 3); Color(String name, int id) { _name = name; _id = id; } private String _name; private int _id; public String getName() { return _name; } public int getId() { return _id; } public static Color getColor(int max) { Random random = new Random(System.currentTimeMillis()); int num = random.nextInt(max); switch (num) { case 0: return Color.RED; case 1: return Color.GREEN; case 2: return Color.BLUE; case 3: return Color.YELLOW; default: return Color.BLUE; } } }
為 Color 提供了一個靜態方法 getColor,可以隨機獲取顏色值。
那麼,可以結合 switch 語句這樣使用:
public static void main(String[] args) { int len = Color.values().length; Color color = Color.getColor(len); switch (color) { case RED: System.out.println("select " + "RED"); break; case GREEN: System.out.println("select " + "GREEN"); break; case BLUE: System.out.println("select " + "BLUE"); break; case YELLOW: System.out.println("select " + "YELLOW"); break; default: System.out.println("select " + "unknow!!"); break; } }
可以看出,switch 語句中是 Color 物件。
------------------------------附錄
完整程式碼
package mark.demo; import java.util.Random; public class EnumDemo { public static void main(String[] args) { int len = Color.values().length; Color color = Color.getColor(len); switch (color) { case RED: System.out.println("select " + "RED"); break; case GREEN: System.out.println("select " + "GREEN"); break; case BLUE: System.out.println("select " + "BLUE"); break; case YELLOW: System.out.println("select " + "YELLOW"); break; default: System.out.println("select " + "unknow!!"); break; } } public enum Color { RED("red color", 0), GREEN("green color", 1), BLUE("blue color", 2), YELLOW("yellow color", 3); Color(String name, int id) { _name = name; _id = id; } private String _name; private int _id; public String getName() { return _name; } public int getId() { return _id; } public static Color getColor(int max) { Random random = new Random(System.currentTimeMillis()); int num = random.nextInt(max); switch (num) { case 0: return Color.RED; case 1: return Color.GREEN; case 2: return Color.BLUE; case 3: return Color.YELLOW; default: return Color.BLUE; } } } }