最近經常有一些項目須要給枚舉設值一個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開始順序遞增的