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; } } } }