這篇文章將為大家詳細(xì)講解有關(guān)使用Java怎么實(shí)現(xiàn)一個(gè)枚舉類接口,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。
創(chuàng)新互聯(lián)為客戶提供專業(yè)的成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、程序、域名、空間一條龍服務(wù),提供基于WEB的系統(tǒng)開(kāi)發(fā). 服務(wù)項(xiàng)目涵蓋了網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站程序開(kāi)發(fā)、WEB系統(tǒng)開(kāi)發(fā)、微信二次開(kāi)發(fā)、手機(jī)網(wǎng)站制作設(shè)計(jì)等網(wǎng)站方面業(yè)務(wù)。Java主要應(yīng)用于:1. web開(kāi)發(fā);2. Android開(kāi)發(fā);3. 客戶端開(kāi)發(fā);4. 網(wǎng)頁(yè)開(kāi)發(fā);5. 企業(yè)級(jí)應(yīng)用開(kāi)發(fā);6. Java大數(shù)據(jù)開(kāi)發(fā);7.游戲開(kāi)發(fā)等。
枚舉類可以實(shí)現(xiàn)一個(gè)或多個(gè)接口。與普通類實(shí)現(xiàn)接口完全一樣,枚舉類實(shí)現(xiàn)接口時(shí),需要實(shí)現(xiàn)該接口所包含的方法。
如果需要每個(gè)枚舉值在調(diào)用同一個(gè)方法時(shí)呈現(xiàn)不同的行為,則可以讓每個(gè)枚舉值在{...}匿名塊中實(shí)現(xiàn)自己的業(yè)務(wù)邏輯。
public interface IGradeHandler { String getGrade(String studentName); }
public enum GradeHandlerEnum implements IGradeHandler { //five grade levels A B C D E A("90~100") { @Override public String getGrade(String studentName) { return studentName + " Outstanding"; } }, E("0~59") { @Override public String getGrade(String studentName) { return studentName + " Fail"; } }; private String score; GradeHandlerEnum(String score) { this.score = score; } public String getScore() { return this.score; } public static void main(String[] args) { GradeHandlerEnum a = GradeHandlerEnum.A; GradeHandlerEnum e = GradeHandlerEnum.valueOf("E"); System.out.println( a.getGrade("Lucy")); System.out.println( e.getGrade("Tom")); } }
為了方便測(cè)試,示例只定義了A和E兩個(gè)等級(jí),執(zhí)行結(jié)果如下:
Lucy Outstanding Tom Fail
反編譯枚舉類
在《Java枚舉抽象方法實(shí)例解析》中介紹了枚舉類型的簡(jiǎn)單使用,現(xiàn)在有必要來(lái)了解一下它的基本實(shí)現(xiàn)原理。實(shí)際上在使用關(guān)鍵字enum創(chuàng)建枚舉類并編譯后,編譯器會(huì)生成一些相關(guān)的類,這些類繼承了Java API中的java.lang.Enum類,也就是說(shuō)通過(guò)關(guān)鍵字enum創(chuàng)建的枚舉類在編譯后事實(shí)上也是一個(gè)類類型而且該類繼承自java.lang.Enum類。
IGradeHandler.class GradeHandlerEnum.class GradeHandlerEnum$1.class GradeHandlerEnum$2.class
使用javac編譯GradeHandlerEnum.java文件后,生成四個(gè)class文件,其中,GradeHandlerEnum.class是枚舉類型,這也就驗(yàn)證前面所說(shuō)的使用關(guān)鍵字enum定義枚舉類并編譯后,編譯器會(huì)自動(dòng)幫助我們生成一個(gè)與枚舉相關(guān)的類。使用jd-gui反編譯后的主要class文件如下:
import java.io.PrintStream; public enum GradeHandlerEnum implements IGradeHandler { // 編譯后生成兩個(gè)class文件GradeHandlerEnum$1和GradeHandlerEnum$2 A("90~100"), E("0~59"); private String score; //私有構(gòu)造函數(shù) private GradeHandlerEnum(String paramString) { this.score = paramString; } public String getScore() { return this.score; } public static void main(String[] paramArrayOfString) { //實(shí)例化枚舉實(shí)例,變量名由系統(tǒng)生成 GradeHandlerEnum localGradeHandlerEnum1 = A; GradeHandlerEnum localGradeHandlerEnum2 = valueOf("E"); System.out.println(localGradeHandlerEnum1.getGrade("Lucy")); System.out.println(localGradeHandlerEnum2.getGrade("Tom")); } } //枚舉值A(chǔ)對(duì)應(yīng)的枚舉類 enum GradeHandlerEnum$1{ GradeHandlerEnum$1(String paramString1) { super(paramString, paramInt, paramString1, null); } public String getGrade(String paramString) { return paramString + " Outstanding"; } } //枚舉值B對(duì)應(yīng)的枚舉類 enum GradeHandlerEnum$2{ GradeHandlerEnum$2(String paramString1) { super(paramString, paramInt, paramString1, null); } public String getGrade(String paramString) { return paramString + " Fail"; } }
關(guān)于使用Java怎么實(shí)現(xiàn)一個(gè)枚舉類接口就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)建站www.cdcxhl.com,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。