Java枚舉方法
因爲枚舉類型實際上是一個類,所以可在枚舉類型體中聲明一切,也可在類體中聲明它。
以下代碼使用字段,構造函數和方法定義了一個名爲 Level
的枚舉。
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
參數。 它將其參數的值存儲在實例變量中。
可以向枚舉類型添加多個構造函數。但不能向枚舉類型添加公共或受保護的構造函數。
Level
枚舉中聲明一個公共方法getLevelValue()
。枚舉常量聲明已更改爲 -
LOW(30), MEDIUM(15), HIGH(7), URGENT(1);
現在每個枚舉常量名稱後面都跟着括號中的整數值。LOW(30)
是調用int
參數類型的構造函數的縮寫。當創建枚舉常量時,括號中的值將被傳遞給添加的構造函數。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);
}
}
}
上面的代碼生成以下結果。
name=LOW, ordinal=0, underLine=30
name=MEDIUM, ordinal=1, underLine=15
name=HIGH, ordinal=2, underLine=7
name=URGENT, ordinal=3, underLine=1