一. 出現背景:
在JDK1.5之前,我們定義常量是這種:public static final String RED = “RED”;
在JDK1.5中增加了枚舉類型,我們能夠把相關的常量分組到一個枚舉類中:
public enum Color {
RED, GREEN, BLUE;
}
使用的時候能夠這樣:Color c = Color.RED
二. 枚舉特點:
1. 枚舉enum是一個特殊的Java類。它繼承自java.lang.Enum,繼承了非常多Enum的方法。但枚舉類是一個不能夠被繼承的final類
2. 枚舉類能夠定義在interface或class中。當然枚舉類型中有構造函數、方法、數據域:
public interface MyConstants {
enum Color {
RED("RED", 1), GREEN("GREEN", 2), BLUE("BLUE", 3);
String desc;
Integer value;
private Color(String desc, Integer value) {
this.desc = desc;
this.value = value;
}
}
enum Light {
RED, GREEN, YELLOW;
}
}
使用:MyConstants.Color.RED
(a). 構造器僅僅是在構造枚舉值的時候被調用
(b). 構造器僅僅能私有,這樣能夠保證外部代碼無法新構建枚舉類的實例
4. 全部枚舉類繼承了Enum的方法,以下是這些方法使用介紹:
(a). ordinal() 返回枚舉值在枚舉種類的順序,這個順序依據枚舉值聲明的順序
(b). compareTo() Enum實現了java.lang.Comparable接口。它返回的是兩個枚舉值的順序之差,但這兩個枚舉值必須屬於同一個枚舉類
(c). values 返回一個包括所有枚舉值的數組
(d). toString 返回枚舉常量的名稱
(e). valueOf 類似toString
(f). equals 比較兩個枚舉類對象的應用
5. 在switch中使用:
public enum Light{
RED, GREEN, YELLOW;
}
class Test {
public static void main(String[] args) {
Light light = Light.RED;
switch (light) {
case RED:
System.out.println("it's red");
break;
case GREEN:
System.out.println("it's green");
break;
case YELLOW:
System.out.println("it's yellow");
break;
}
}
}
