先來一個枚舉來舉例子
1 /** 2 * 3 */ 4 public enum LogType { 5 /** 6 * 新增 7 */ 8 ADD("36010100","ADD"), 9 /** 10 * 修改 11 */ 12 EDIT("36010101","EDIT"), 13 /** 14 * 刪除 15 */ 16 DEL("36010102","DEL"), 17 /** 18 * 查看 19 */ 20 VIEW("--","VIEW"), 21 /** 22 * 默認無操作 23 */ 24 NULL("","NULL"), 25 /** 26 * 回滾操作 27 */ 28 ROLLBACK("36010103","ROLLBACK"); 29 private String operateTypeKey; 30 private String operateType; 31 LogType(String key,String operateType){ 32 this.operateTypeKey = key; 33 this.operateType = operateType; 34 } 35 36 public String getOperateTypeKey() { 37 return operateTypeKey; 38 } 39 40 public void setOperateTypeKey(String operateTypeKey) { 41 this.operateTypeKey = operateTypeKey; 42 } 43 44 public String getOperateType() { 45 return operateType; 46 } 47 48 public void setOperateType(String operateType) { 49 this.operateType = operateType; 50 } 51 52 @Override 53 public String toString() { 54 return "AspectOperation{" + 55 "operateTypeKey='" + operateTypeKey + '\'' + 56 ", operateType='" + operateType + '\'' + 57 '}'; 58 } 59 }
在這個枚舉當中可以看到例舉了幾種操作的類型,增加,修改,刪除,查看,回滾的操作。
以及反編譯之后的結果
1 public enum LogType 2 { 3 ADD("36010100", "ADD"), 4 5 EDIT("36010101", "EDIT"), 6 7 DEL("36010102", "DEL"), 8 9 VIEW("--", "VIEW"), 10 11 NULL("", "NULL"), 12 13 ROLLBACK("36010103", "ROLLBACK"); 14 15 private String operateTypeKey; 16 private String operateType; 17 18 private LogType(String key, String operateType) { this.operateTypeKey = key; 19 this.operateType = operateType; } 20 21 public String getOperateTypeKey() 22 { 23 return this.operateTypeKey; 24 } 25 26 public void setOperateTypeKey(String operateTypeKey) { 27 this.operateTypeKey = operateTypeKey; 28 } 29 30 public String getOperateType() { 31 return this.operateType; 32 } 33 34 public void setOperateType(String operateType) { 35 this.operateType = operateType; 36 } 37 38 public String toString() 39 { 40 return "AspectOperation{operateTypeKey='" + this.operateTypeKey + '\'' + ", operateType='" + this.operateType + '\'' + '}'; 41 } 42 }
可以看到在其構造函數當中,構造函數是private說明,其在創建的時候無法實例化枚舉類型。但是他可以擁有自己的構造方法,一個私有值,和get set的方法,以及通過get方法返回你需要的,但是這邊的set方法已經失去了它本身的意義,完全可以去除。
下面看一下靜態值類
1 public class LogTypeStatic { 2 public final static String ADD="ADD"; 3 public final static String Eidt="EDIT"; 4 public final static String DEL="DEL"; 5 public final static String NULL="NULL"; 6 public final static String VIEW="VIEW"; 7 }
靜態值類很簡單,羅列的幾種出現的類型,簡單的調用方式就不在這邊贅述了。下面通過一個例子表示一下枚舉類型在使用的時候的優勢。
1 @Test 2 public void testLogType(){ 3 LogType [] logType = LogType.values(); 4 for(int i=0;i<logType.length;i++){ 5 System.out.print(logType[i]); 6 } 7 }
枚舉類有自己的可以遍歷自己所有的值,當成一個集合來使用,在使用的時候如果有新的類型添加進來,直接在枚舉類型當中進行修改,值需要修改這個類即可,其他設涉及到這邊的類文件不需要修改,同時也可以映射到

將枚舉的類型看成一個集合來繼續處理,這樣的處理方式比靜態值的處理方式明顯優越很多,易於擴展。方法之間的參數傳遞就通過枚舉類來進行傳遞,而不通過String類型來進行傳遞,更加易於理解,在代碼里面也有更多的含義。
