欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java枚舉類(lèi)接口實(shí)例原理解析

 更新時(shí)間:2020年01月16日 15:41:09   作者:樓蘭的胡楊  
這篇文章主要介紹了Java枚舉類(lèi)接口實(shí)例原理解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

這篇文章主要介紹了Java枚舉類(lèi)接口實(shí)例原理解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

枚舉類(lèi)可以實(shí)現(xiàn)一個(gè)或多個(gè)接口。與普通類(lèi)實(shí)現(xiàn)接口完全一樣,枚舉類(lèi)實(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

反編譯枚舉類(lèi)

在《Java枚舉抽象方法實(shí)例解析》中介紹了枚舉類(lèi)型的簡(jiǎn)單使用,現(xiàn)在有必要來(lái)了解一下它的基本實(shí)現(xiàn)原理。實(shí)際上在使用關(guān)鍵字enum創(chuàng)建枚舉類(lèi)并編譯后,編譯器會(huì)生成一些相關(guān)的類(lèi),這些類(lèi)繼承了Java API中的java.lang.Enum類(lèi),也就是說(shuō)通過(guò)關(guān)鍵字enum創(chuàng)建的枚舉類(lèi)在編譯后事實(shí)上也是一個(gè)類(lèi)類(lèi)型而且該類(lèi)繼承自java.lang.Enum類(lèi)。

IGradeHandler.class
GradeHandlerEnum.class
GradeHandlerEnum$1.class
GradeHandlerEnum$2.class

使用javac編譯GradeHandlerEnum.java文件后,生成四個(gè)class文件,其中,GradeHandlerEnum.class是枚舉類(lèi)型,這也就驗(yàn)證前面所說(shuō)的使用關(guān)鍵字enum定義枚舉類(lèi)并編譯后,編譯器會(huì)自動(dòng)幫助我們生成一個(gè)與枚舉相關(guān)的類(lèi)。使用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)的枚舉類(lèi)
enum GradeHandlerEnum$1{
 GradeHandlerEnum$1(String paramString1) {
  super(paramString, paramInt, paramString1, null);
 }
 
 public String getGrade(String paramString) {
  return paramString + " Outstanding";
 }
}
//枚舉值B對(duì)應(yīng)的枚舉類(lèi)
enum GradeHandlerEnum$2{
 GradeHandlerEnum$2(String paramString1) {
  super(paramString, paramInt, paramString1, null);
 }
 
 public String getGrade(String paramString) {
  return paramString + " Fail";
 }
}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論