Java教程--枚舉類型使用方法詳細講解

  Java開發中的枚舉類型定義了一個枚舉值的列表,每一個值是一個標識符。例如,下面的語句聲明瞭一個枚舉類型,用來表示星期的可能狀況:html

public enum Day {
    SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY
}

  實際上,這個聲明定義的類型是一個類,它有7個實例。所以,在比較兩個枚舉類型的值時,永遠不須要調用equals,直接使用「==」就能夠了。this

  枚舉類型的值相似於一個常量,所以,按照慣例拼寫都使用大寫字母。而枚舉類型的命名則與類名的命名規則一致。
  一旦定義了枚舉類型,就能夠使用這個類型來聲明變量:htm

Day day;

  變量day只能是枚舉類型Day中的一個值或null。能夠使用下面的語法訪問枚舉值:對象

EnumName.ValueName

    例如,下面的語句將枚舉值賦給變量day:blog

day = Day.SUNDAY;

  能夠在一個枚舉類型的對象上使用下面的方法:接口

      public String name();ip

  返回枚舉值的名字。開發

      public int ordinal();get

  返回枚舉值的序號。枚舉類型中的第一個值序號爲0,第二個值序號爲1,依次類推。
  下面的例子展現了枚舉類型的使用:it

public class EnumDemo {    enum Day {
        SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY
    }    public static void main(String[] args) {
        Day day1 = Day.FRIDAY;
        Day day2 = Day.THURSDAY;

        System.out.println("The name of day1 is" + day1.name());
        System.out.println("The name of day2 is" + day2.name());
        System.out.println("The ordinal of day1 is" + day1.ordinal());
        System.out.println("The ordinal of day2 is" + day2.ordinal());
    }
}

  這個程序的輸出以下:

The name of day1 is FRIDAY
The name of day2 is THURSDAY
The ordinal of day1 is 5The ordinal of day2 is 4

  因爲枚舉類型是Object類的子類和Comparable接口的實現類,所以能夠對枚舉對象調用Object類的方法,例如equals,toString等,也能夠調用Comparable接口的compareTo方法。

  在switch-case語句中使用枚舉類型時,case標籤能夠是省略枚舉類型的枚舉值,例如:

switch (day) {    case SUNDAY:        // process SUNDAY
    case MONDAY:        // process MONDAY
    ...
}

  能夠定義具備數據域、構造器和方法的枚舉類型:

public enum Day {
    SUNDAY("星期天"), MONDAY("星期一"), TUESDAY("星期二"), WEDNESDAY("星期三"),
    THURSDAY("星期四"), FRIDAY("星期五"), SATURDAY("星期六");    public String description;    private Day(String description) {        this.description = description;
    }    public String getDescription() {        return description;
    }
}

  須要注意的是,當枚舉類型中除了枚舉值的聲明外還有其餘部分時,枚舉值的聲明必須是第一條語句,且結尾處須要使用分號。此外,因爲枚舉值的數量是在編譯期就肯定的,所以不建議建立新的枚舉值,因此Java語法要求枚舉類型的構造方法是私有的以免被直接調用。private修飾符可省略,這種狀況下,構造方法也會被默認爲私有的。

相關文章
相關標籤/搜索