枚举类型

来源:互联网 发布:合力矩阵 编辑:程序博客网 时间:2024/06/05 08:22

JDK1.5 才开始有枚举类型,同时可爱的 Java 组织丰富了 switch 语句:支持枚举。


定义一个枚举类 Color

[java] view plaincopyprint?
  1. public enum Color {  
  2.         RED("red color"0),   
  3.         GREEN("green color"1),  
  4.         BLUE("blue color"2),   
  5.         YELLOW("yellow color"3);  
  6.   
  7.         Color(String name, int id) {  
  8.             _name = name;  
  9.             _id = id;  
  10.         }  
  11.   
  12.         private String _name;  
  13.         private int _id;  
  14.   
  15.         public String getName() {  
  16.             return _name;  
  17.         }  
  18.   
  19.         public int getId() {  
  20.             return _id;  
  21.         }  
  22.   
  23.         public static Color getColor(int max) {  
  24.             Random random = new Random(System.currentTimeMillis());  
  25.             int num = random.nextInt(max);  
  26.             switch (num) {  
  27.             case 0:  
  28.                 return Color.RED;  
  29.             case 1:  
  30.                 return Color.GREEN;  
  31.             case 2:  
  32.                 return Color.BLUE;  
  33.             case 3:  
  34.                 return Color.YELLOW;  
  35.             default:  
  36.                 return Color.BLUE;  
  37.             }  
  38.         }  
  39. }  

为 Color 提供了一个静态方法 getColor,可以随机获取颜色值。


那么,可以结合 switch 语句这样使用:

[java] view plaincopyprint?
  1. public static void main(String[] args) {  
  2.         int len = Color.values().length;  
  3.         Color color = Color.getColor(len);  
  4.         switch (color) {  
  5.         case RED:  
  6.             System.out.println("select " + "RED");  
  7.             break;  
  8.         case GREEN:  
  9.             System.out.println("select " + "GREEN");  
  10.             break;  
  11.         case BLUE:  
  12.             System.out.println("select " + "BLUE");  
  13.             break;  
  14.         case YELLOW:  
  15.             System.out.println("select " + "YELLOW");  
  16.             break;  
  17.         default:  
  18.             System.out.println("select " + "unknow!!");  
  19.             break;  
  20.         }  
  21. }  

可以看出,switch 语句中是 Color 对象。


------------------------------附录


完整代码

[java] view plaincopyprint?
  1. package mark.demo;  
  2.   
  3. import java.util.Random;  
  4.   
  5. public class EnumDemo {  
  6.   
  7.     public static void main(String[] args) {  
  8.         int len = Color.values().length;  
  9.         Color color = Color.getColor(len);  
  10.         switch (color) {  
  11.         case RED:  
  12.             System.out.println("select " + "RED");  
  13.             break;  
  14.         case GREEN:  
  15.             System.out.println("select " + "GREEN");  
  16.             break;  
  17.         case BLUE:  
  18.             System.out.println("select " + "BLUE");  
  19.             break;  
  20.         case YELLOW:  
  21.             System.out.println("select " + "YELLOW");  
  22.             break;  
  23.         default:  
  24.             System.out.println("select " + "unknow!!");  
  25.             break;  
  26.         }  
  27.     }  
  28.   
  29.     public enum Color {  
  30.         RED("red color"0),   
  31.         GREEN("green color"1),  
  32.         BLUE("blue color"2),   
  33.         YELLOW("yellow color"3);  
  34.   
  35.         Color(String name, int id) {  
  36.             _name = name;  
  37.             _id = id;  
  38.         }  
  39.   
  40.         private String _name;  
  41.         private int _id;  
  42.   
  43.         public String getName() {  
  44.             return _name;  
  45.         }  
  46.   
  47.         public int getId() {  
  48.             return _id;  
  49.         }  
  50.   
  51.         public static Color getColor(int max) {  
  52.             Random random = new Random(System.currentTimeMillis());  
  53.             int num = random.nextInt(max);  
  54.             switch (num) {  
  55.             case 0:  
  56.                 return Color.RED;  
  57.             case 1:  
  58.                 return Color.GREEN;  
  59.             case 2:  
  60.                 return Color.BLUE;  
  61.             case 3:  
  62.                 return Color.YELLOW;  
  63.             default:  
  64.                 return Color.BLUE;  
  65.             }  
  66.         }  
  67.     }  
  68. }  
原创粉丝点击