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