程序進階:一起來用用Java枚舉

2020-12-16 老梁的程序人生

我們都知道Java中的類和接口可以完成許多功能,但是在實際的應用中人們發現有的需求和功能類和接口無法實現。比如當我們需要對一些類的屬性需要作出限制時,這些方法就不太適用,為了解決這種問題,在JDK1.5之後引入了枚舉類型,這篇文章中老梁就和大家一起好好聊聊枚舉。還是老樣子,老梁還是先舉一個例子來闡述枚舉的基本定義,如下圖:

從老梁上面的例子大家可以看出枚舉的特點,那就是枚舉在使用的時候有點像Java中對象的常量定義,不過在枚舉的定義中對這些常量進行了確切的定義,不可以隨意更改。對於「常量」的使用來說,我們通常的使用就是需要將它進行遍歷。枚舉類型亦不例外,在下面的例子中老梁使用enum.values()的方式,通過foreach直接將枚舉中的內容全部輸出,具體的代碼例子可以看下圖:

枚舉不但可以使用foreach進行遍歷,還可以使用switch對枚舉中的內容進行判斷。這樣算起來,枚舉還是在無形中擴大了switch的使用範圍,要知道在平時使用的時候switch通常用來判斷char型和int的數據。具體的使用例子可以參考老梁給出的代碼例子,如下圖:

在這裡我們需要注意的是,在老梁舉的例子中使用了EnumTest.values()這個方法,這個方法表示取得了枚舉中的全部內容,返回的是一個對象數組,這是枚舉本身自帶的方法。不是老梁舉例出現錯誤導致switch方法失效。如果大家想看更具體的switch方法的效果,不妨自己進行一下編碼嘗試。

從之前老梁舉的例子中大家可以看到,枚舉的定義可以使用關鍵字enum來實現。實際上這個關鍵字表示的是java.lang.Enum。就是當我們使用enum這個關鍵字來聲明的時候就相當於創建了一個java.lang.Enum類型的對象。而常用的枚舉方法如下表:

在前面的文章中老梁介紹了幾個主要的接口,當時老梁說這幾個接口別看簡單但是使用頻繁。在今天關於枚舉的知識點中就有相關接口的使用。那就是EnumMap和EnumSet,這兩個類可以使得關於枚舉的操作變得更加簡單,其中的EnumMap接口是Map接口的一個特殊實現,大家可以一起來看看這兩個接口的強大。

同樣的,EnumSet是Set接口的子類,所以裡面不能出現重複的內容,在使用EnumSet時不能直接進行實例化,需要藉助EnumSet接口提供的靜態方法才可以。具體的靜態方法如下表,老梁在這裡只舉一個例子,而關於相關方法的使用大家可以自己進行嘗試。

從上面的兩個例子我們可以看到,通過EnumMap和EnumSet接口方法的定義,我們可以將枚舉中的內容轉移到Map或者Set中,這樣就可以使用這兩個接口的特點來完成操作,十分方便。好啦,今天關於枚舉的內容老梁就講到這裡。說起來,枚舉的使用不太常見,它的使用主要是為了彌補類和接口的不足,不過大家也需要了解枚舉的相關知識,畢竟有備無患,在開發的時候我們並不能確定一定不會用到枚舉。

相關焦點

  • Java枚舉原來還能這麼用
    點擊藍色「
  • 【枚舉】用好 Java 中的枚舉,真的沒有那麼簡單!
    「最近重看 Java 枚舉,看到這篇覺得還不錯的文章,於是簡單翻譯和完善了一些內容,分享給大家,希望你們也能有所收穫。另外,不要忘了文末還有補充哦!ps: 這裡發一篇枚舉的文章,也是因為後面要發一篇非常實用的關於 SpringBoot 全局異常處理的比較好的實踐裡面就用到了枚舉。
  • Java枚舉使用詳解
    在實際編程中,往往存在著這樣的「數據集」,它們的數值在程序中是穩定的,而且「數據集」中的元素是有限的。例如星期一到星期日七個數據元素組成了一周的「數據集」,春夏秋冬四個數據元素組成了四季的「數據集」。在java中如何更好的使用這些「數據集」呢?
  • 為啥用枚舉,枚舉有哪些用法?
    Java基礎:枚舉的用法與原理在學習過程中,我們也只是在定義常量的時候,會意識到枚舉的存在,而定義常量其實可以在類中實現,這時就會感覺枚舉有點雞肋。但在實際項目開發的過程中,枚舉因相當迷人的特性而受到越來越多的關注。本文將按以下小節點來,一一介紹枚舉:1.
  • 用好Java中的枚舉,真的沒有那麼簡單!
    「最近重看 Java 枚舉,看到這篇覺得還不錯的文章,於是簡單翻譯和完善了一些內容,分享給大家,希望你們也能有所收穫。另外,不要忘了文末還有補充哦!ps: 這裡發一篇枚舉的文章,也是因為後面要發一篇非常實用的關於 SpringBoot 全局異常處理的比較好的實踐裡面就用到了枚舉。
  • Java面向對象之枚舉——enum
    Java 枚舉從Java 5 開始,提供了一種新的數據類型,枚舉。和接口一樣,枚舉是一個特殊的類,其實質上就是數量固定的多個常量對象的集合。枚舉主要用來表示固定的事務類型。枚舉語法定義格式:常量之間使用英文狀態下的「,」分隔,最後一個常量之後必須要用「;」結尾。
  • Java枚舉(Enum)類型原理探求
    Enum枚舉類型Enum的全寫是Enumeration,這個詞的翻譯是列舉、逐條陳述、細目。在程序語言中,枚舉類型是一種特殊的數據類型(常用的數據類型比如字符串、整型),這種數據類型的變量值限定在固定的範圍, 比如季節只有春夏秋冬,月份是12個。
  • Java枚舉用法詳解
    枚舉的典型應用場景:錯誤碼、狀態機等。枚舉類型的本質儘管 enum 看起來像是一種新的數據類型,事實上,enum是一種受限制的類,並且具有自己的方法。創建enum時,編譯器會為你生成一個相關的類,這個類繼承自 java.lang.Enum。
  • 恕我直言,我懷疑你並不會用 Java 枚舉
    開門見山地說吧,enum(枚舉)是 Java 1.5 時引入的關鍵字,它表示一種特殊類型的類,默認繼承自 java.lang.Enum。此外,它還附帶幾個有用靜態方法,比如說 values() 和  valueOf(String name)。01、內部枚舉好的,小夥伴們應該已經清楚枚舉長什麼樣子了吧?既然枚舉是一種特殊的類,那它其實是可以定義在一個類的內部的,這樣它的作用域就可以限定於這個外部類中使用。
  • Java枚舉深度解讀,看這篇就夠了
    上面這兩種做法都非常的簡單易用,但也有弊端。比如我們只知道一個狀態值,當我們要獲取狀態的屬性或者相關的內容時,我們該怎麼做呢?獲取到枚舉對象,我們當然也可以獲取到對應的屬性及方法,這種可用性就提高了很多,我們在開發程序進行判斷,可以根據各種枚舉值的指定屬性來進行,提高了代碼的可維護性。
  • java enum(枚舉)使用詳解 + 總結
    enum 關鍵字,隱含了所創建的類型都是 java.lang.Enum 類的子類(java.lang.Enum 是一個抽象類)。Class getDeclaringClass()返回與此枚舉常量的枚舉類型相對應的 Class 對象。String name()返回此枚舉常量的名稱,在其枚舉聲明中對其進行聲明。int ordinal()返回枚舉常量的序數(它在枚舉聲明中的位置,其中初始常量序數為零)。
  • Java 枚舉類型使用,枚舉集合介紹
    枚舉類型從前面的數據類型章節可知 Java 中並沒有枚舉類型,但通過 Java API 中的 java.lang.Enum 枚舉類我們可以定義枚舉類型數據,本質上還是一個類類型。為什麼要定義枚舉類型?有時後變量只會取幾個確定值中的一個,這時枚舉類型就很方便了,如定義一周的星期幾:1.枚舉類型的定義通過關鍵字 enum 定義枚舉類型數據,數據值一般採用大寫。定義位置可以放在類中,類的外部,或者另外的文件中定義。
  • 用好 Java 中的枚舉,真的沒有那麼簡單!
    1.概覽在本文中,我們將看到什麼是 Java 枚舉,它們解決了哪些問題以及如何在實踐中使用  Java 枚舉實現一些設計模式。enum關鍵字在 java5 中引入,表示一種特殊類型的類,其總是繼承java.lang.Enum類,更多內容可以自行查看其官方文檔。
  • 每日一課 | Java –比較枚舉值
    Java枚舉示例Language.javapackage com.mkyong.java public enum Language {    JAVA,    PYTHON,    NODE,    NET,    RUBY}2.與==比較將枚舉值與==運算符進行比較的示例。
  • 尚學堂知識整理:java 枚舉值
    枚舉類型定義了兩件事:枚舉常量名稱常量的順序以下代碼聲明了一個名為Level的公共枚舉類型,它具有四個枚舉常量:LOW,MEDIUM,HIGH 和 URGENT。Level枚舉類型定義了四個枚舉常量。級別枚舉類型的變量只能是以下四個值之一 - LOW,MEDIUM,HIGH 和 URGENT 或 null。可以通過使用枚舉類型名稱作為限定符和點符號來引用枚舉常量。以下代碼將Level枚舉類型常量的值分配給一些局部變量:但是不能實例化枚舉類型。
  • 為什麼建議你使用枚舉?
    枚舉是 JDK 1.5 新增的數據類型,使用枚舉我們可以很好的描述一些特定的業務場景,比如一年中的春、夏、秋、冬,還有每周的周一到周天,還有各種顏色,以及可以用它來描述一些狀態信息,比如錯誤碼等。:REDNEW_RED用法七:使用枚舉集合在 Java 語言中和枚舉類相關的,還有兩個枚舉集合類 java.util.EnumSet 和 java.util.EnumMap,使用它們可以實現更多的功能。
  • Java中枚舉的線程安全性及序列化問題
    Java SE5提供了一種新的類型-Java的枚舉類型,關鍵字enum可以將一組具名的值的有限集合創建為一種新的類型,而這些具名的值可以作為常規的程序組件使用,這是一種非常有用的功能。本文將深入分析枚舉的源碼,看一看枚舉是怎麼實現的,他是如何保證線程安全的,以及為什麼用枚舉實現的單例是最好的方式。要想看源碼,首先得有一個類吧,那麼枚舉類型到底是什麼類呢?是enum嗎?
  • Java基礎,基礎類型包裝類、Math類、枚舉簡介
    近兩天講解的內容可能有些枯燥,沒有之前講的有意思,看著也沒什麼用,不能這樣想,最近講的是很有用的,雖然是基礎的東西,但是沒有這些基礎的積累,後面講的東西會不容易理解,相信老韓,廢話少說,開始今天的講解把。
  • 一文搞懂 Java 中的枚舉,寫得非常好!
    創建enum時,編譯器會為你生成一個相關的類,這個類繼承自 java.lang.Enum。此外,java.lang.Enum實現了Comparable和 Serializable接口,所以也提供 compareTo()方法。關於Java序列化你應該知道的一切,推薦大家閱讀。
  • 用記事本寫一個Java程序
    在D盤根目錄下新建一個test文件夾,並在該文件夾中新建文本文檔,重命名為HelloWorld.java後,用記事本方式打開,在其中編寫一段Java代碼