Java 枚舉方法

2018-01-19 15:13 更新

Java面向對象設計 - Java枚舉方法


因為枚舉類型實際上是一個類類型,所以我們可以在枚舉類型體中聲明一切,我們可以在類體中聲明它。

以下代碼使用字段,構造函數和方法定義了一個級別枚舉。

public enum Level {
  LOW(30), MEDIUM(15), HIGH(7), URGENT(1);

  // Declare an instance variable
  private int levelValue;

  // Declare a private constructor
  private Level(int levelValue) {
    this.levelValue = levelValue;
  }

  public int getLevelValue() {
    return levelValue;
  }
}

上面的代碼聲明了一個實例變量 levelValue ,它將為每個枚舉常量存儲一個值。

它還定義了一個私有構造函數,它接受一個int參數。它將其參數的值存儲在實例變量中。

我們可以向枚舉類型添加多個構造函數。

我們不能向枚舉類型添加公共或受保護的構造函數。

級別枚舉聲明一個公共方法getLevelValue()。

枚舉常量聲明已更改為

LOW(30), MEDIUM(15),  HIGH(7),  URGENT(1);

現在每個枚舉常量名稱后面都跟著括號中的整數值。 LOW(30)是調用int參數類型的構造函數的縮寫。

當創(chuàng)建枚舉常量時,括號中的值將被傳遞給我們添加的構造函數。

LOW調用默認的無參數構造函數,而LOW(30)使用參數調用構造函數。


例子

以下代碼測試Level枚舉類型。它打印常量的名稱,它們的序數和它們的下劃線值。

enum Level {
  LOW(30), MEDIUM(15), HIGH(7), URGENT(1);

  // Declare an instance variable
  private int levelValue;

  // Declare a private constructor
  private Level(int levelValue) {
    this.levelValue = levelValue;
  }

  public int getLevelValue() {
    return levelValue;
  }
}

public class Main {
  public static void main(String[] args) {
    for (Level s : Level.values()) {
      String name = s.name();
      int ordinal = s.ordinal();
      int underLine = s.getLevelValue();
      System.out.println("name=" + name + ",  ordinal=" + ordinal + ", underLine="
          + underLine);
    }
  }
}

上面的代碼生成以下結果。



以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號