java枚舉變量反解析用法

最近經常有一些項目須要給枚舉設值一個int值,以及對int值進行反解析出枚舉類型,代碼以下:數組

 1 public enum MatchResultEnum {
 2 
 3     /**
 4      * 贏
 5      */
 6     WIN(0),
 7     /**
 8      * 輸
 9      */
10     LOSE(1),
11     /**
12      * 平局
13      */
14     DRAW(2);
15 
16     /**
17      * 比賽結果的code值
18      */
19     private int code;
20 
21     MatchResultEnum(int value) {
22         this.code = value;
23     }
24 
25     public int getCode() {
26         return code;
27     }
28 
29 
30     public static MatchResultEnum parse(int value) {
31         MatchResultEnum[] values = values();
32         for (MatchResultEnum matchResult : values) {
33             if (matchResult.code == value) {
34                 return matchResult;
35             }
36         }
37         return null;
38     }
39 }

 

 

後期優化以下:優化

1 private static MatchResultEnum[] result = {WIN, LOSE, DRAW};
2 public static MatchResultEnum parse(int value) {
3     if (value < result.length) {
4         return result[value];
5     }
6     return null;
7 }
8 
9 //替換原代碼:30-38行 ,緣由數組更加高效。可是這種用法有取巧的作法,前提是code值恰好是從0開始順序遞增的
相關文章
相關標籤/搜索