1. 程式人生 > >Java教程--列舉型別使用方法詳細講解

Java教程--列舉型別使用方法詳細講解

在這裡插入圖片描述

Java開發中列舉型別定義了一個列舉值的列表,每個值是一個識別符號。例如,下面的語句聲明瞭一個列舉型別,用來表示星期的可能情況:
  public enum Day {
SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY
}  
實際上,這個宣告定義的型別是一個類,它有7個例項。因此,在比較兩個列舉型別的值時,永遠不需要呼叫equals,直接使用“==”就可以了。
  列舉型別的值類似於一個常量,因此,按照慣例拼寫都使用大寫字母。而列舉型別的命名則與類名的命名規則一致。
  一旦定義了列舉型別,就可以使用這個型別來宣告變數:Day day;  變數day只能是列舉型別Day中的一個值或null。可以使用下面的語法訪問列舉值:EnumName.ValueName
  例如,下面的語句將列舉值賦給變數day:
  day = Day.SUNDAY;  
  可以在一個列舉型別的物件上使用下面的方法:
  public String name();  
  返回列舉值的名字。public int ordinal();  
  返回列舉值的序號。列舉型別中的第一個值序號為0,第二個值序號為1,依次類推。
  下面的例子展示了列舉型別的使用: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修飾符可省略,這種情況下,構造方法也會被預設為私有的。
文章來自:

https://www.itjmd.com/news/show-4306.html