java學(xué)習(xí)中如何使用Enum類型

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

創(chuàng)新互聯(lián)公司專注于二七網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供二七營(yíng)銷型網(wǎng)站建設(shè),二七網(wǎng)站制作、二七網(wǎng)頁(yè)設(shè)計(jì)、二七網(wǎng)站官網(wǎng)定制、重慶小程序開發(fā)服務(wù),打造二七網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供二七網(wǎng)站排名全網(wǎng)營(yíng)銷落地服務(wù)。

一、Enum 類型的介紹

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

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

Public static class RainbowColor { 
    
   // 紅橙黃綠青藍(lán)紫七種顏色的常量定義
   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; 
}

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

類型不安全

由于顏色常量的對(duì)應(yīng)值是整數(shù)形,所以程序執(zhí)行過程中很有可能給顏色變量傳入一個(gè)任意的整數(shù)值,導(dǎo)致出現(xiàn)錯(cuò)誤。

沒有命名空間

由于顏色常量只是類的屬性,當(dāng)你使用的時(shí)候不得不通過類來訪問。

一致性差

因?yàn)檎蚊杜e屬于編譯期常量,所以編譯過程完成后,所有客戶端和服務(wù)器端引用的地方,會(huì)直接將整數(shù)值寫入。這樣,當(dāng)你修改舊的枚舉整數(shù)值后或者增加新的枚舉值后,所有引用地方代碼都需要重新編譯,否則運(yùn)行時(shí)刻就會(huì)出現(xiàn)錯(cuò)誤。

類型無指意性

由于顏色枚舉值僅僅是一些無任何含義的整數(shù)值,如果在運(yùn)行期調(diào)試時(shí)候,你就會(huì)發(fā)現(xiàn)日志中有很多魔術(shù)數(shù)字,但除了程序員本身,其他人很難明白其意義。

二、如何定義 Enum 類型

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

java學(xué)習(xí)中如何使用Enum類型

從上面的定義形式來看,似乎 Java 中的枚舉類型很簡(jiǎn)單,但實(shí)際上 Java 語言規(guī)范賦予枚舉類型的功能非常的強(qiáng)大,它不僅是簡(jiǎn)單地將整形數(shù)值轉(zhuǎn)換成對(duì)象,而是將枚舉類型定義轉(zhuǎn)變成一個(gè)完整功能的類定義。這種類型定義的擴(kuò)展允許開發(fā)者給枚舉類型增加任何方法和屬性,也可以實(shí)現(xiàn)任意的接口。另外,Java 平臺(tái)也為Enum 類型提供了高質(zhì)量的實(shí)現(xiàn),比如默認(rèn)實(shí)現(xiàn) Comparable 和 Serializable 接口,讓開發(fā)者一般情況下不用關(guān)心這些細(xì)節(jié)。

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

定義 Enum 類型

// 定義一周七天的枚舉類型         
public enum WeekDayEnum { Mon, Tue, Wed, Thu, Fri, Sat, Sun } 
 
// 讀取當(dāng)天的信息
WeekDayEnum today = readToday(); 
 
// 根據(jù)日期來選擇進(jìn)行活動(dòng)
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; 
}

對(duì)于這些枚舉的日期,JVM 都會(huì)在運(yùn)行期構(gòu)造成出一個(gè)簡(jiǎn)單的對(duì)象實(shí)例一一對(duì)應(yīng)。這些對(duì)象都有唯一的 identity,類似整形數(shù)值一樣,switch 語句就根據(jù)此來進(jìn)行執(zhí)行跳轉(zhuǎn)。

如何定制 Enum 類型

除了以上這種最常見的枚舉定義形式外,如果需要給枚舉類型增加一些復(fù)雜功能,也可以通過類似 class 的定義來給枚舉進(jìn)行定制。比如要給 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>"), 
    
   // 洛杉磯時(shí)報(bào)頭條新聞 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>"); 
        
   // 枚舉對(duì)象的 RSS 地址的屬性
   private String rss_url; 
        
   // 枚舉對(duì)象構(gòu)造函數(shù)
   private NewsRSSFeedEnum(String rss) { 
       this.rss_url = rss; 
   } 
        
   // 枚舉對(duì)象獲取 RSS 地址的方法
   public String getRssURL() { 
       return this.rss_url; 
   } 
}

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

關(guān)于java學(xué)習(xí)中如何使用Enum類型就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。

當(dāng)前名稱:java學(xué)習(xí)中如何使用Enum類型
文章位置:http://bm7419.com/article4/gejeie.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶體驗(yàn)、手機(jī)網(wǎng)站建設(shè)企業(yè)建站、小程序開發(fā)、網(wǎng)站維護(hù)全網(wǎng)營(yíng)銷推廣

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)