您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“java枚舉有什么用”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“java枚舉有什么用”這篇文章吧。
枚舉是Java1.5引入的新特性,通過關鍵字enum來定義枚舉類。枚舉類是一種特殊類,它和普通類一樣可以使用構造器、定義成員變量和方法,也能實現一個或多個接口,但枚舉類不能繼承其他類。
Effctive Java中之所以推薦用枚舉代替所有常量Code,原因如下:
(1)類型檢查,有效性檢查
(2)枚舉作為一個類,可以有自己的屬性(通常應該是常量,我沒遇到過不是的情況)以及自己的方法(否則只能用switch來寫,實際違反原則)
(3)和常量相比,無需查看文檔和源碼就能直接知道所有可能返回值,方便編碼。
然而這里的問題就出在第一點上,實際上分布式環境下(1)并不是必然的。如果業務處理中允許某個接口返回值有未定義內容,那么在反序列化中就不該對此拋出異常,不必死守(1)。同時,從第(2)點和第(3)點來看,這樣限制枚舉的使用范圍造成的影響是極大的。將有自己屬性,自己方法實現的枚舉改寫為code和其他方法的配合,需要的代碼量上升不少,而且代碼腐爛度極大增加。
(1)由于Java中支持單繼承,因此枚舉類型不能再繼承其他類;
(2)使用枚舉作為返回值可能造成的問題其實大家都知道就是客戶端和服務端版本不一致的話,會造成反序列化異常,于是《阿里巴巴JAVA開發手冊》對于這個問題的處理辦法就采取了盡量避免異常出現,所以禁止定義枚舉為返回值。
對于業務開發來說,業務邏輯的復雜是必然的,隨著業務發展,需求只會越來越復雜,為了考慮到各種各樣的情況,代碼中不可避免的會出現很多if-else。
一旦代碼中if-else過多,就會大大的影響其可讀性和可維護性,而且代碼顯得很low。
枚舉可以解決這個問題;
關于枚舉與switch是個比較簡單的話題,使用switch進行條件判斷時,條件參數一般只能是整型,字符型。而枚舉型確實也被switch所支持,在java 1.7后switch也對字符串進行了支持。這里我們簡單看一下switch與枚舉類型的使用
static void testSwitch(Week week){ switch (week){ case MONDAY: System.out.println(week.getMeaning()); break; case TUESDAY: System.out.println(week.getMeaning()); break; case WEDNESDAY: System.out.println(week.getMeaning()); break; case THURSDAY: System.out.println(week.getMeaning()); break; case FRIDAY: System.out.println(week.getMeaning()); break; case SATURDAY: System.out.println(week.getMeaning()); break; case SUNDAY: System.out.println(week.getMeaning()); break; default: System.out.println("您輸入有誤"); break; }}
以上是“java枚舉有什么用”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。