您好,登錄后才能下訂單哦!
本篇文章為大家展示了怎樣解析Java枚舉類接口實例原理,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
枚舉類可以實現一個或多個接口。與普通類實現接口完全一樣,枚舉類實現接口時,需要實現該接口所包含的方法。
如果需要每個枚舉值在調用同一個方法時呈現不同的行為,則可以讓每個枚舉值在{...}匿名塊中實現自己的業務邏輯。
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兩個等級,執行結果如下:
Lucy OutstandingTom Fail
反編譯枚舉類
現在有必要來了解一下它的基本實現原理。實際上在使用關鍵字enum創建枚舉類并編譯后,編譯器會生成一些相關的類,這些類繼承了Java API中的java.lang.Enum類,也就是說通過關鍵字enum創建的枚舉類在編譯后事實上也是一個類類型而且該類繼承自java.lang.Enum類。
IGradeHandler.classGradeHandlerEnum.classGradeHandlerEnum$1.classGradeHandlerEnum$2.class
使用javac編譯GradeHandlerEnum.java文件后,生成四個class文件,其中,GradeHandlerEnum.class是枚舉類型,這也就驗證前面所說的使用關鍵字enum定義枚舉類并編譯后,編譯器會自動幫助我們生成一個與枚舉相關的類。使用jd-gui反編譯后的主要class文件如下:
import java.io.PrintStream;public enum GradeHandlerEnum implements IGradeHandler {// 編譯后生成兩個class文件GradeHandlerEnum$1和GradeHandlerEnum$2 A("90~100"), E("0~59"); private String score; //私有構造函數 private GradeHandlerEnum(String paramString) { this.score = paramString; } public String getScore() { return this.score; } public static void main(String[] paramArrayOfString) {//實例化枚舉實例,變量名由系統生成 GradeHandlerEnum localGradeHandlerEnum1 = A; GradeHandlerEnum localGradeHandlerEnum2 = valueOf("E"); System.out.println(localGradeHandlerEnum1.getGrade("Lucy")); System.out.println(localGradeHandlerEnum2.getGrade("Tom")); }}//枚舉值A對應的枚舉類enum GradeHandlerEnum$1{ GradeHandlerEnum$1(String paramString1) { super(paramString, paramInt, paramString1, null); } public String getGrade(String paramString) { return paramString + " Outstanding"; }}//枚舉值B對應的枚舉類enum GradeHandlerEnum$2{ GradeHandlerEnum$2(String paramString1) { super(paramString, paramInt, paramString1, null); } public String getGrade(String paramString) { return paramString + " Fail"; }}
上述內容就是怎樣解析Java枚舉類接口實例原理,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。