亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

枚舉公共接口

public interface IPairs<K, V, C extends Enum> {
  /**
   * 返回枚舉對象
   * */
  C get();
  /**
   * 返回枚舉項的 key
   * */
  K key();
  /**
   * 返回枚舉項的 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;
  }
}

代碼驗證

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é)論:

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

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

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

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

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

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

```java
interface info{
  void show();
}
enum Season1 implements info{
  //用enum關(guān)鍵字后,首先要把類里面定義的對象提到最前面,將一些重復(fù)
  // 的前綴的去掉,每個對象之間要用逗號隔開,最后一個用分號
  //后面的就沒有什么變化
   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;
  }
  //注意這時候沒有重寫toString方法,即但是依然可以輸出對象
  // 的內(nèi)容。即enum類不是繼承object類,而是默認(rèn)繼承
  //lang包下的enum類
  @Override
  public void show() {
    System.out.println("這是一個季節(jié)");
  }
}

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

二、讓 枚舉類的對象分別去實現(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)鍵字后,首先要把類里面定義的對象提到最前面,將一些重復(fù)
  // 的前綴的去掉,每個對象之間要用逗號隔開,最后一個用分號
  //后面的就沒有什么變化
   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;
  }
  //注意這時候沒有重寫toString方法,即但是依然可以輸出對象
  // 的內(nèi)容。即enum類不是繼承object類,而是默認(rèn)繼承
  //lang包下的enum類
//  @Override
//  public void show() {
//    System.out.println("這是一個季節(jié)");
//  }
}

在每一個對象逗號前面加一個大括號,然后里面寫上重寫的方法

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

相關(guān)文章

  • java常量字符串過長報錯的解決辦法以及原因分析

    java常量字符串過長報錯的解決辦法以及原因分析

    在IDEA中字符串長度超過65535,進(jìn)行打印,IDEA會提示java:常量字符串過長,這篇文章主要給大家介紹了關(guān)于java常量字符串過長報錯的解決辦法以及原因分析,需要的朋友可以參考下
    2023-01-01
  • J2SE基礎(chǔ)之JDK環(huán)境變量配置

    J2SE基礎(chǔ)之JDK環(huán)境變量配置

    進(jìn)行java開發(fā),首先要安裝jdk,安裝了jdk后還要進(jìn)行環(huán)境變量配置,下面我們就來詳細(xì)探討下這個問題。
    2016-05-05
  • java中斷機(jī)制實例講解

    java中斷機(jī)制實例講解

    這篇文章主要介紹了java中斷機(jī)制實例講解,用了風(fēng)趣幽默的講法,有對這方面不太懂的同學(xué)可以研究下
    2021-01-01
  • Java面試題沖刺第二十天--算法(1)

    Java面試題沖刺第二十天--算法(1)

    這篇文章主要為大家分享了最有價值的三道關(guān)于算法的面試題,涵蓋內(nèi)容全面,包括數(shù)據(jù)結(jié)構(gòu)和算法相關(guān)的題目、經(jīng)典面試編程題等,感興趣的小伙伴們可以參考一下
    2021-08-08
  • 關(guān)于Java的HashMap多線程并發(fā)問題分析

    關(guān)于Java的HashMap多線程并發(fā)問題分析

    HashMap是采用鏈表解決Hash沖突,因為是鏈表結(jié)構(gòu),那么就很容易形成閉合的鏈路,這樣在循環(huán)的時候只要有線程對這個HashMap進(jìn)行g(shù)et操作就會產(chǎn)生死循環(huán),本文針對這個問題進(jìn)行分析,需要的朋友可以參考下
    2023-05-05
  • 基于Java SSM的健康管理小程序的實現(xiàn)

    基于Java SSM的健康管理小程序的實現(xiàn)

    本篇文章主要為大家分享了基于SSM健康管理小程序的設(shè)計與實現(xiàn)。感興趣的小伙伴可以了解一下
    2021-11-11
  • 如何使用Jackson和JSON Pointer查詢解析任何JSON節(jié)點(diǎn)

    如何使用Jackson和JSON Pointer查詢解析任何JSON節(jié)點(diǎn)

    本文介紹了JSON Pointer是字符串表達(dá)式,可以非常方便解析復(fù)雜JSON節(jié)點(diǎn)值,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • Java使用opencv識別二維碼的完整步驟

    Java使用opencv識別二維碼的完整步驟

    OpenMV是一個開源,低成本,功能強(qiáng)大的機(jī)器視覺模塊,下面這篇文章主要給大家介紹了關(guān)于Java使用opencv識別二維碼的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2021-09-09
  • Java多線程案例之單例模式懶漢+餓漢+枚舉

    Java多線程案例之單例模式懶漢+餓漢+枚舉

    這篇文章主要介紹了Java多線程案例之單例模式懶漢+餓漢+枚舉,文章著重介紹在多線程的背景下簡單的實現(xiàn)單例模式,需要的小伙伴可以參考一下
    2022-06-06
  • 深入淺析Java Object Serialization與 Hadoop 序列化

    深入淺析Java Object Serialization與 Hadoop 序列化

    序列化是指將結(jié)構(gòu)化對象轉(zhuǎn)化為字節(jié)流以便在網(wǎng)絡(luò)上傳輸或者寫到磁盤永久存儲的過程。下面通過本文給大家分享Java Object Serialization與 Hadoop 序列化,需要的朋友可以參考下
    2017-06-06

最新評論