Java中枚举的使用

JAVA学习网 2018-05-07 11:47:02

Java中枚举其实就是静态常量,今天发现枚举里面其实还能加方法,学习了下,

代码如下:

  1 package org.pine.test;
  2 
  3 import java.util.HashMap;
  4 import java.util.Map;
  5 
  6 public enum Color {
  7     //静态常量
  8     RED(1,"红色"),GREEN(2,"绿色"),BLUE(3,"蓝色"),YELLOW(7,"黄色");
  9     //属性
 10     private int index;
 11     private String name;
 12     //构造方法
 13     Color(int index, String name){
 14        this.index=index;
 15        this.name=name;
 16     }
 17     //set、get
 18     public int getIndex() {
 19         return this.index;
 20     }
 21 
 22     public void setIndex(int index) {
 23         this.index = index;
 24     }
 25 
 26     public String getName() {
 27         return this.name;
 28     }
 29 
 30     public void setName(String name) {
 31         this.name = name;
 32     }
 33 
 34     /**
 35      *通过index获取name
 36      * @param index
 37      * @return name
 38      */
 39     public static String getName(int index){
 40         Color[] colors = Color.values();
 41         for(Color color:colors){
 42            if(color.getIndex()==index){
 43              return color.getName();
 44            }
 45         }
 46         throw new RuntimeException("Could not find the Color.");
 47     }
 48 
 49     /**
 50      * 通过name获取index
 51      * @param name
 52      * @return index
 53      */
 54     public static int getIndex(String name){
 55         Color[] colors = Color.values();
 56         for(Color color:colors){
 57             if(color.getName().equals(name)){
 58                 return color.getIndex();
 59             }
 60         }
 61         throw new RuntimeException("Could not find the Color.");
 62     }
 63 
 64     /**
 65      *通过index获取Color
 66      * @param index
 67      * @return Color
 68      */
 69     public static Color getColor(int index){
 70         Color[] colors = Color.values();
 71         for(Color color:colors){
 72             if(color.getIndex()==index){
 73                 return color;
 74             }
 75         }
 76         throw new RuntimeException("Could not find the Color.");
 77     }
 78 
 79     /**
 80      * 通过name获取Color
 81      * @param name
 82      * @return Color
 83      */
 84     public static Color getColor(String name){
 85         Color[] colors = Color.values();
 86         for(Color color:colors){
 87             if(color.getName().equals(name)){
 88                 return color;
 89             }
 90         }
 91         throw new RuntimeException("Could not find the Color.");
 92     }
 93 
 94     /**
 95      * 红路灯变换
 96      */
 97     public static Color next(Color color){
 98         Map<Color,Color> map = new HashMap();
 99         map.put(RED,GREEN);
100         map.put(GREEN,YELLOW);
101         map.put(YELLOW,RED);
102         return map.get(color);
103     }
104 
105     /**
106      * 重写toString
107      * @return
108      */
109     @Override
110     public String toString() {
111         return "Color{" +
112                 "index=" + index +
113                 ", name='" + name + '\'' +
114                 '}';
115     }
116 }

测试类:

 1 package org.pine.test;
 2 
 3 public class ColorTest {
 4 
 5    public static void main(String[] args){
 6        Color r = Color.RED;
 7        r.setIndex(4);
 8 
 9        Color g = Color.GREEN;
10        g.setIndex(5);
11 
12        Color b= Color.BLUE;
13        b.setIndex(6);
14 
15        System.out.println(r.getIndex());
16        System.out.println(g.getIndex());
17        System.out.println(b.getIndex());
18 
19        System.out.println(r);
20        System.out.println(g);
21        System.out.println(b);
22 
23        //通过index获取name
24        String name = Color.getName(4);
25        System.out.println(name);
26 
27        //通过name获取index
28        int index = Color.getIndex("绿色");
29        System.out.println(index);
30 
31        //通过index获取Color
32        Color c1 = Color.getColor(5);
33        System.out.println(c1);
34 
35        //通过name获取Color
36        Color c2 = Color.getColor("蓝色");
37        System.out.println(c2);
38 
39        Color c3 = Color.valueOf("RED");
40        System.out.println(c3);
41        //红绿灯变换
42        System.out.println(Color.next(Color.RED));
43        System.out.println(Color.next(Color.GREEN));
44        System.out.println(Color.next(Color.YELLOW));
45    }
46 }

 

阅读(806) 评论(0)