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

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

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

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

枚舉類可以實(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)在有必要來了解一下它的基本實(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.class
GradeHandlerEnum.class
GradeHandlerEnum$1.class
GradeHandlerEnum$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ǔ)對(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";
 }
}

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

相關(guān)文章

  • 經(jīng)典的Java面試題及回答集錦(基礎(chǔ)篇)

    經(jīng)典的Java面試題及回答集錦(基礎(chǔ)篇)

    本文給大家收藏整理了java面試題及回答,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧
    2018-03-03
  • 使用React和springboot做前后端分離項(xiàng)目的步驟方式

    使用React和springboot做前后端分離項(xiàng)目的步驟方式

    這篇文章主要介紹了使用React和springboot做前后端分離項(xiàng)目的步驟方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • Java中使用正則表達(dá)式獲取網(wǎng)頁中所有圖片的路徑

    Java中使用正則表達(dá)式獲取網(wǎng)頁中所有圖片的路徑

    這篇文章主要介紹了Java中使用正則表達(dá)式獲取網(wǎng)頁中所有圖片的路徑,本文直接給出實(shí)例代碼,需要的朋友可以參考下
    2015-06-06
  • Springboot如何利用攔截器攔截請(qǐng)求信息收集到日志詳解

    Springboot如何利用攔截器攔截請(qǐng)求信息收集到日志詳解

    一些系統(tǒng)經(jīng)常需要關(guān)注用戶請(qǐng)求的具體信息,如用戶信息、請(qǐng)求參數(shù)、響應(yīng)結(jié)果等等,在SpringBoot應(yīng)用中可通過攔截器的方式統(tǒng)一處理,下面這篇文章主要給大家介紹了關(guān)于Springboot如何利用攔截器攔截請(qǐng)求信息收集到日志的相關(guān)資料,需要的朋友可以參考下
    2021-08-08
  • UniApp?+?SpringBoot?實(shí)現(xiàn)微信支付和退款功能

    UniApp?+?SpringBoot?實(shí)現(xiàn)微信支付和退款功能

    這篇文章主要介紹了UniApp?+?SpringBoot?實(shí)現(xiàn)微信支付和退款功能,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06
  • Java?C++題解leetcode817鏈表組件示例

    Java?C++題解leetcode817鏈表組件示例

    這篇文章主要為大家介紹了Java?C++題解leetcode817鏈表組件示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10
  • JDK14性能管理工具之Jconsole的使用詳解

    JDK14性能管理工具之Jconsole的使用詳解

    JConsole是JDK自帶的管理工具,在JAVA_HOME/bin下面,直接命令JConsole即可開啟JConsole。接下來通過本文給大家分享JDK14性能管理工具之Jconsole的使用,感興趣的朋友一起看看吧
    2020-05-05
  • Spring security基于數(shù)據(jù)庫中賬戶密碼認(rèn)證

    Spring security基于數(shù)據(jù)庫中賬戶密碼認(rèn)證

    這篇文章主要介紹了Spring security基于數(shù)據(jù)庫中賬戶密碼認(rèn)證,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • Java實(shí)現(xiàn)將文件或者文件夾壓縮成zip的詳細(xì)代碼

    Java實(shí)現(xiàn)將文件或者文件夾壓縮成zip的詳細(xì)代碼

    這篇文章主要介紹了Java實(shí)現(xiàn)將文件或者文件夾壓縮成zip的詳細(xì)代碼,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-11-11
  • 解決Lombok注解不起作用的問題

    解決Lombok注解不起作用的問題

    這篇文章主要介紹了解決Lombok注解不起作用的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08

最新評(píng)論