最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java 利用枚舉實(shí)現(xiàn)接口進(jìn)行統(tǒng)一管理

 更新時(shí)間:2021年02月24日 15:02:23   作者:Jaemon  
這篇文章主要介紹了Java 利用枚舉實(shí)現(xiàn)接口進(jìn)行統(tǒng)一管理,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

枚舉公共接口

public interface IPairs<K, V, C extends Enum> {
  /**
   * 返回枚舉對(duì)象
   * */
  C get();
  /**
   * 返回枚舉項(xiàng)的 key
   * */
  K key();
  /**
   * 返回枚舉項(xiàng)的 value
   * */
  V value();
}

狀態(tài)枚舉類

public enum StatusEnum implements IPairs<Integer, String, StatusEnum> {
  DISABLED(0, "record has been disabled"),
  ENABLED(1, "record has been enabled"),
  DELETES(9, "record has been deleted")
  ;
  private int code;
  private String desc;
  StatusEnum(int code, String desc) {
    this.code = code;
    this.desc = desc;
  }
  public StatusEnum get() {
    return this;
  }
  @Override
  public Integer key() {
    return this.code;
  }
  @Override
  public String value() {
    return this.desc;
  }
}

響應(yīng)枚舉類

public enum ResponseEnum implements IPairs<Integer, String, ResponseEnum> {
  SUCCESS(10000, "success"),
  FAILED(10001, "failed")
  ;
  private int code;
  private String desc;
  ResponseEnum(int code, String desc) {
    this.code = code;
    this.desc = desc;
  }
  public ResponseEnum get() {
    return this;
  }
  @Override
  public Integer key() {
    return this.code;
  }
  @Override
  public String value() {
    return this.desc;
  }
}

代碼驗(yàn)證

public class AnswerApp {
  public static void main(String[] args) {
    invoke(StatusEnum.ENABLED);
    System.out.println();
    response(ResponseEnum.SUCCESS);
  }
  
  private static void response(IPairs pairs) {
    System.out.println(pairs.get() == ResponseEnum.SUCCESS);
    System.out.println(MessageFormat.format("key: {0}, value: {1}", pairs.key(), pairs.value()));
  }
  
  private static void invoke(IPairs pairs) {
    System.out.println(pairs.get() == StatusEnum.ENABLED);
    System.out.println(MessageFormat.format("key: {0}, value: {1}", pairs.key(), pairs.value()));
  }
}  

程序運(yùn)行結(jié)果

true
key: 1, value: record has been enabled
true
key: 10,000, value: success

結(jié)論:

項(xiàng)目中使用同一接口管理枚舉類, 在方法參數(shù)中使用接口而不是用具體的枚舉對(duì)象作為入?yún)ⅲ?可以一定程度上降低程序的耦合性

補(bǔ)充:java中enum類的兩種接口的實(shí)現(xiàn)方法

和普通 Java 類一樣,枚舉類可以實(shí)現(xiàn)一個(gè)或多個(gè)接口

若每個(gè)枚舉值在調(diào)用實(shí)現(xiàn)的接口方法呈現(xiàn)相同的行為方式,則只 要統(tǒng)一實(shí)現(xiàn)該方法即可。

若需要每個(gè)枚舉值在調(diào)用實(shí)現(xiàn)的接口方法呈現(xiàn)出不同的行為方式, 則可以讓每個(gè)枚舉值分別來(lái)實(shí)現(xiàn)該方法

1、enum關(guān)鍵字定義枚舉類實(shí)現(xiàn)接口的情況

```java
interface info{
  void show();
}
enum Season1 implements info{
  //用enum關(guān)鍵字后,首先要把類里面定義的對(duì)象提到最前面,將一些重復(fù)
  // 的前綴的去掉,每個(gè)對(duì)象之間要用逗號(hào)隔開(kāi),最后一個(gè)用分號(hào)
  //后面的就沒(méi)有什么變化
   SPRING ("春天","春意暖暖"),
   SUMMER ("春天","春意暖暖"),
   AUTUMN ("春天","春意暖暖"),
   WINTER ("春天","春意暖暖");
  private final String seasonName;
  private final String seasonDeac;
  private Season1(String seasonName,String seasonDeac){
  this.seasonDeac = seasonDeac;
  this.seasonName = seasonName;
  }
  public String getSeasonDeac() {
    return seasonDeac;
  }
  public String getSeasonName() {
    return seasonName;
  }
  //注意這時(shí)候沒(méi)有重寫toString方法,即但是依然可以輸出對(duì)象
  // 的內(nèi)容。即enum類不是繼承object類,而是默認(rèn)繼承
  //lang包下的enum類
  @Override
  public void show() {
    System.out.println("這是一個(gè)季節(jié)");
  }
}

enum接口的實(shí)現(xiàn)和普通類實(shí)現(xiàn)沒(méi)有什么區(qū)別

二、讓 枚舉類的對(duì)象分別去實(shí)現(xiàn)接口中的抽象方法

```java
```java
/**
 * @author LYH_351147852@QQ.COM
 * @create 2019-10-05 21:39
 */
public class SeasonTest1 {
  public static void main(String[] args) {
    Season1[] values = Season1.values();
    for (int i = 0;i < values.length;i++){
      values[i].show();
    }
  }
}
interface info{
  void show();
}
enum Season1 implements info{
  //用enum關(guān)鍵字后,首先要把類里面定義的對(duì)象提到最前面,將一些重復(fù)
  // 的前綴的去掉,每個(gè)對(duì)象之間要用逗號(hào)隔開(kāi),最后一個(gè)用分號(hào)
  //后面的就沒(méi)有什么變化
   SPRING ("春天","春意暖暖"){
    @Override
    public void show() {
      System.out.println("春天美好");
    }
  },
   SUMMER ("夏天","夏日炎炎"){
     @Override
     public void show() {
       System.out.println("夏天炎熱");
     }
   },
   AUTUMN ("秋天","秋高氣爽"){
     @Override
     public void show() {
       System.out.println("秋天寒冷");
     }
   },
   WINTER ("冬天","寒風(fēng)呼嘯"){
     @Override
     public void show() {
       System.out.println("寒風(fēng)呼嘯");
     }
   };
  private final String seasonName;
  private final String seasonDeac;
  private Season1(String seasonName,String seasonDeac){
  this.seasonDeac = seasonDeac;
  this.seasonName = seasonName;
  }
  public String getSeasonDeac() {
    return seasonDeac;
  }
  public String getSeasonName() {
    return seasonName;
  }
  //注意這時(shí)候沒(méi)有重寫toString方法,即但是依然可以輸出對(duì)象
  // 的內(nèi)容。即enum類不是繼承object類,而是默認(rèn)繼承
  //lang包下的enum類
//  @Override
//  public void show() {
//    System.out.println("這是一個(gè)季節(jié)");
//  }
}

在每一個(gè)對(duì)象逗號(hào)前面加一個(gè)大括號(hào),然后里面寫上重寫的方法

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。

相關(guān)文章

  • Java 模擬真正的并發(fā)請(qǐng)求詳情

    Java 模擬真正的并發(fā)請(qǐng)求詳情

    有時(shí)需要測(cè)試一下某個(gè)功能的并發(fā)性能,又不要想借助于其他工具,索性就自己的開(kāi)發(fā)語(yǔ)言,來(lái)一個(gè)并發(fā)請(qǐng)求就最方便了。下文我們就來(lái)學(xué)習(xí)Java 如何模擬真正的并發(fā)請(qǐng)求
    2021-09-09
  • 關(guān)于JVM垃圾回收的java.lang.ref.Finalizer問(wèn)題

    關(guān)于JVM垃圾回收的java.lang.ref.Finalizer問(wèn)題

    這篇文章主要介紹了關(guān)于JVM垃圾回收的java.lang.ref.Finalizer問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • Mybatis配置之<typeAliases>別名配置元素解析

    Mybatis配置之<typeAliases>別名配置元素解析

    這篇文章主要介紹了Mybatis配置之<typeAliases>別名配置元素解析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • jdbc實(shí)現(xiàn)圖書館借閱系統(tǒng)

    jdbc實(shí)現(xiàn)圖書館借閱系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了jdbc實(shí)現(xiàn)圖書館借閱系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-02-02
  • struts2實(shí)現(xiàn)多文件上傳

    struts2實(shí)現(xiàn)多文件上傳

    這篇文章主要為大家詳細(xì)介紹了struts2實(shí)現(xiàn)多文件上傳,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • 淺談log4j 不打印異常堆棧

    淺談log4j 不打印異常堆棧

    這篇文章主要介紹了淺談log4j 不打印異常堆棧,小編覺(jué)得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-02-02
  • 聊聊MultipartFile與File的一些事兒

    聊聊MultipartFile與File的一些事兒

    這篇文章主要介紹了MultipartFile與File的一些事兒,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • java注解之運(yùn)行時(shí)修改字段的注解值操作

    java注解之運(yùn)行時(shí)修改字段的注解值操作

    這篇文章主要介紹了java注解之運(yùn)行時(shí)修改字段的注解值操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-08-08
  • C++和Java命令行繪制心形圖案

    C++和Java命令行繪制心形圖案

    這篇文章主要為大家詳細(xì)介紹了C++和Java命令行繪制心形圖案,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-04-04
  • Liquibase結(jié)合SpringBoot使用實(shí)現(xiàn)數(shù)據(jù)庫(kù)管理功能

    Liquibase結(jié)合SpringBoot使用實(shí)現(xiàn)數(shù)據(jù)庫(kù)管理功能

    Liquibase 是一個(gè)強(qiáng)大的數(shù)據(jù)庫(kù)管理工具,它幫助你通過(guò)自動(dòng)化管理數(shù)據(jù)庫(kù)的變更、版本控制、和回滾,簡(jiǎn)化了開(kāi)發(fā)中的數(shù)據(jù)庫(kù)遷移工作,這篇文章主要介紹了Liquibase結(jié)合SpringBoot使用實(shí)現(xiàn)數(shù)據(jù)庫(kù)管理,需要的朋友可以參考下
    2024-12-12

最新評(píng)論

博客| 县级市| 华坪县| 阿鲁科尔沁旗| 维西| 库尔勒市| 大英县| 新平| 扶余县| 策勒县| 铁岭市| 枝江市| 荣昌县| 康保县| 普安县| 新河县| 东辽县| 六安市| 融水| 高雄市| 滦南县| 衡水市| 绥江县| 大足县| 介休市| 莫力| 西贡区| 陕西省| 昌宁县| 宿迁市| 霍州市| 达拉特旗| 钟祥市| 扶沟县| 公主岭市| 巢湖市| 上思县| 涪陵区| 榆社县| 中方县| 永丰县|