本篇文章為大家展示了怎樣解析Java枚舉類接口實(shí)例原理,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。
創(chuàng)新互聯(lián)是一家專注于成都網(wǎng)站制作、做網(wǎng)站與策劃設(shè)計(jì),忻州網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)十年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:忻州等地區(qū)。忻州做網(wǎng)站價(jià)格咨詢:028-86922220
枚舉類可以實(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")); }}
為了方便測試,示例只定義了A和E兩個(gè)等級,執(zhí)行結(jié)果如下:
Lucy OutstandingTom Fail
反編譯枚舉類
現(xiàn)在有必要來了解一下它的基本實(shí)現(xiàn)原理。實(shí)際上在使用關(guān)鍵字enum創(chuàng)建枚舉類并編譯后,編譯器會(huì)生成一些相關(guān)的類,這些類繼承了Java API中的java.lang.Enum類,也就是說通過關(guān)鍵字enum創(chuàng)建的枚舉類在編譯后事實(shí)上也是一個(gè)類類型而且該類繼承自java.lang.Enum類。
IGradeHandler.classGradeHandlerEnum.classGradeHandlerEnum$1.classGradeHandlerEnum$2.class
使用javac編譯GradeHandlerEnum.java文件后,生成四個(gè)class文件,其中,GradeHandlerEnum.class是枚舉類型,這也就驗(yàn)證前面所說的使用關(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ǔ)對應(yīng)的枚舉類enum GradeHandlerEnum$1{ GradeHandlerEnum$1(String paramString1) { super(paramString, paramInt, paramString1, null); } public String getGrade(String paramString) { return paramString + " Outstanding"; }}//枚舉值B對應(yīng)的枚舉類enum GradeHandlerEnum$2{ GradeHandlerEnum$2(String paramString1) { super(paramString, paramInt, paramString1, null); } public String getGrade(String paramString) { return paramString + " Fail"; }}
上述內(nèi)容就是怎樣解析Java枚舉類接口實(shí)例原理,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
文章題目:怎樣解析Java枚舉類接口實(shí)例原理
標(biāo)題URL:http://sd-ha.com/article22/pepejc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序、App開發(fā)、關(guān)鍵詞優(yōu)化、域名注冊、響應(yīng)式網(wǎng)站、移動(dòng)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)