中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java學習中如何使用Enum類型

發布時間:2020-07-15 09:40:43 來源:億速云 閱讀:148 作者:Leah 欄目:編程語言

這篇文章運用簡單易懂的例子給大家介紹java學習中如何使用Enum類型,代碼非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

一、Enum 類型的介紹

枚舉類型(Enumerated Type) 很早就出現在編程語言中,它被用來將一組類似的值包含到一種類型當中。而這種枚舉類型的名稱則會被定義成獨一無二的類型描述符,在這一點上和常量的定義相似。不過相比較常量類型,枚舉類型可以為聲明的變量提供更大的取值范圍。

舉個例子來說明一下,如果希望為彩虹描繪出七種顏色,你可以在 Java 程序中通過常量定義方式來實現。

Public static class RainbowColor { 
    
   // 紅橙黃綠青藍紫七種顏色的常量定義
   public static final int RED = 0; 
   public static final int ORANGE = 1; 
   public static final int YELLOW = 2; 
   public static final int GREEN = 3; 
   public static final int CYAN = 4; 
   public static final int BLUE = 5; 
   public static final int PURPLE = 6; 
}

使用的時候,你可以在程序中直接引用這些常量。但是,這種方式還是存在著一些問題。

類型不安全

由于顏色常量的對應值是整數形,所以程序執行過程中很有可能給顏色變量傳入一個任意的整數值,導致出現錯誤。

沒有命名空間

由于顏色常量只是類的屬性,當你使用的時候不得不通過類來訪問。

一致性差

因為整形枚舉屬于編譯期常量,所以編譯過程完成后,所有客戶端和服務器端引用的地方,會直接將整數值寫入。這樣,當你修改舊的枚舉整數值后或者增加新的枚舉值后,所有引用地方代碼都需要重新編譯,否則運行時刻就會出現錯誤。

類型無指意性

由于顏色枚舉值僅僅是一些無任何含義的整數值,如果在運行期調試時候,你就會發現日志中有很多魔術數字,但除了程序員本身,其他人很難明白其意義

二、如何定義 Enum 類型

    為了改進 Java 語言在這方面的不足彌補缺陷,5.0 版本 SDK 發布時候,在語言層面上增加了枚舉類型。枚舉類型的定義也非常的簡單,用 enum 關鍵字加上名稱和大括號包含起來的枚舉值體即可,例如上面提到的彩虹顏色就可以用新的 enum 方式來重新定義:

java學習中如何使用Enum類型

從上面的定義形式來看,似乎 Java 中的枚舉類型很簡單,但實際上 Java 語言規范賦予枚舉類型的功能非常的強大,它不僅是簡單地將整形數值轉換成對象,而是將枚舉類型定義轉變成一個完整功能的類定義。這種類型定義的擴展允許開發者給枚舉類型增加任何方法和屬性,也可以實現任意的接口。另外,Java 平臺也為 Enum 類型提供了高質量的實現,比如默認實現 Comparable 和 Serializable 接口,讓開發者一般情況下不用關心這些細節。

回到本文的主題上來,引入枚舉類型到底能夠給我們開發帶來什么樣好處呢?一個最直接的益處就是擴大 switch 語句使用范圍。5.0 之前,Java 中 switch 的值只能夠是簡單類型,比如 int、byte、short、char, 有了枚舉類型之后,就可以使用對象了。這樣一來,程序的控制選擇就變得更加的方便,看下面的例子:

定義 Enum 類型

// 定義一周七天的枚舉類型         
public enum WeekDayEnum { Mon, Tue, Wed, Thu, Fri, Sat, Sun } 
 
// 讀取當天的信息
WeekDayEnum today = readToday(); 
 
// 根據日期來選擇進行活動
switch(today) { 
 Mon: do something; break; 
 Tue: do something; break; 
 Wed: do something; break; 
 Thu: do something; break; 
 Fri: do something; break; 
 Sat: play sports game; break; 
 Sun: have a rest; break; 
}

對于這些枚舉的日期,JVM 都會在運行期構造成出一個簡單的對象實例一一對應。這些對象都有唯一的 identity,類似整形數值一樣,switch 語句就根據此來進行執行跳轉。

如何定制 Enum 類型

除了以上這種最常見的枚舉定義形式外,如果需要給枚舉類型增加一些復雜功能,也可以通過類似 class 的定義來給枚舉進行定制。比如要給 enum 類型增加屬性,可以像下面這樣定義:

// 定義 RSS(Really Simple Syndication) 種子的枚舉類型
public enum NewsRSSFeedEnum { 
   // 雅虎頭條新聞 RSS 種子
   YAHOO_TOP_STORIES("<a href="http://rss.news.yahoo.com/rss/topstories"><code>http://rss.news.yahoo.com/rss/topstories</code></a>"), 
    
   //CBS 頭條新聞 RSS 種子
   CBS_TOP_STORIES("<a href="http://feeds.cbsnews.com/CBSNewsMain?format=xml"><code>http://feeds.cbsnews.com/CBSNewsMain?format=xml</code></a>"), 
    
   // 洛杉磯時報頭條新聞 RSS 種子
   LATIMES_TOP_STORIES("<a href="http://feeds.latimes.com/latimes/news?format=xml"><code>http://feeds.latimes.com/latimes/news?format=xml</code></a>"); 
        
   // 枚舉對象的 RSS 地址的屬性
   private String rss_url; 
        
   // 枚舉對象構造函數
   private NewsRSSFeedEnum(String rss) { 
       this.rss_url = rss; 
   } 
        
   // 枚舉對象獲取 RSS 地址的方法
   public String getRssURL() { 
       return this.rss_url; 
   } 
}

上面頭條新聞的枚舉類型增加了一個 RSS 地址的屬性 , 記錄頭條新聞的訪問地址。同時,需要外部傳入 RSS 訪問地址的值,因而需要定義一個構造函數來初始化此屬性。另外,還需要向外提供方法來讀取 RSS 地址。

關于java學習中如何使用Enum類型就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

平山县| 左权县| 宜州市| 江孜县| 许昌县| 梅州市| 百色市| 五华县| 东乡族自治县| 石景山区| 新晃| 商洛市| 长白| 勃利县| 玛多县| 邹平县| 太原市| 商城县| 威宁| 高密市| 新宾| 东乌珠穆沁旗| 宿州市| 嘉黎县| 武清区| 衡东县| 贞丰县| 正定县| 慈溪市| 淳安县| 德惠市| 伊宁市| 刚察县| 修水县| 井陉县| 淳化县| 阳东县| 延庆县| 罗平县| 平南县| 玉环县|