91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何在Java中利用枚舉對接口進行統一管理

發布時間:2021-02-25 16:37:22 來源:億速云 閱讀:306 作者:Leah 欄目:開發技術

這篇文章給大家介紹如何在Java中利用枚舉對接口進行統一管理,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

枚舉公共接口

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

狀態枚舉類

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;
  }
}

響應枚舉類

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()));
  }
}

程序運行結果

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

結論:

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

補充:java中enum類的兩種接口的實現方法

和普通 Java 類一樣,枚舉類可以實現一個或多個接口

若每個枚舉值在調用實現的接口方法呈現相同的行為方式,則只 要統一實現該方法即可。

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

1、enum關鍵字定義枚舉類實現接口的情況

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

enum接口的實現和普通類實現沒有什么區別

二、讓 枚舉類的對象分別去實現接口中的抽象方法

```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關鍵字后,首先要把類里面定義的對象提到最前面,將一些重復
  // 的前綴的去掉,每個對象之間要用逗號隔開,最后一個用分號
  //后面的就沒有什么變化
   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 ("冬天","寒風呼嘯"){
     @Override
     public void show() {
       System.out.println("寒風呼嘯");
     }
   };
  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方法,即但是依然可以輸出對象
  // 的內容。即enum類不是繼承object類,而是默認繼承
  //lang包下的enum類
//  @Override
//  public void show() {
//    System.out.println("這是一個季節");
//  }
}

關于如何在Java中利用枚舉對接口進行統一管理就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

平南县| 遵义县| 邹平县| 抚顺县| 贵州省| 灯塔市| 富蕴县| 科技| 凤城市| 玉田县| 肇东市| 浦城县| 大宁县| 巴里| 乌苏市| 章丘市| 方城县| 进贤县| 合阳县| 临武县| 南开区| 通海县| 抚松县| 麻江县| 西青区| 浑源县| 鄢陵县| 靖西县| 万山特区| 宁武县| 卢氏县| 江西省| 常宁市| 商丘市| 增城市| 峡江县| 洪洞县| 长海县| 合阳县| 宁阳县| 达拉特旗|