首頁 >Java >java教程 >JAVA 枚舉(enum)詳解

JAVA 枚舉(enum)詳解

Guanhui
Guanhui轉載
2020-07-18 17:35:253207瀏覽

JAVA 枚舉(enum)詳解

Java 枚舉是一個特殊的類,一般表示一組常數,例如一年的4 個季節,一個年的12 個月份,一個星期的7 天,方向有東南西北等。

Java 枚舉類別使用 enum 關鍵字來定義,各個常數使用逗號 , 來分割。

例如定義一個顏色的枚舉類別。

enum Color 
{ 
  RED, GREEN, BLUE; 
}

以上枚舉類別 Color 顏色常數有 RED, GREEN, BLUE,分別表示紅色,綠色,藍色。

使用實例:

enum Color
{
  RED, GREEN, BLUE;
}
 
public class Test
{
  // 执行输出结果
  public static void main(String[] args)
  {
    Color c1 = Color.RED;
    System.out.println(c1);
  }
}

執行上述程式碼輸出結果為:

#RED

內部類別中使用枚舉

枚舉類別也可以宣告在內部類別中:

public class Test
{
  enum Color
  {
    RED, GREEN, BLUE;
  }
 
  // 执行输出结果
  public static void main(String[] args)
  {
    Color c1 = Color.RED;
    System.out.println(c1);
  }
}

執行上述程式碼輸出結果為:

##RED

每個枚舉都是透過Class 在內部實現的,且所有的枚舉值都是public static final 的。

以上的枚舉類別Color 轉換在內部類別實作:

class Color
{
   public static final Color RED = new Color();
   public static final Color BLUE = new Color();
   public static final Color GREEN = new Color();
}

#迭代枚舉元素

可以使用for 語句來迭代列舉元素:

enum Color
{
  RED, GREEN, BLUE;
}
public class MyClass {
 public static void main(String[] args) {
  for (Color myVar : Color.values()) {
   System.out.println(myVar);
  }
 }
}

執行上述程式碼輸出結果為:

RED

GREEN
BLUE

在switch 中使用枚舉類別

枚舉類別常應用於switch 語句中:

enum Color
{
  RED, GREEN, BLUE;
}
public class MyClass {
 public static void main(String[] args) {
  Color myVar = Color.BLUE;

  switch(myVar) {
   case RED:
    System.out.println("红色");
    break;
   case GREEN:
     System.out.println("绿色");
    break;
   case BLUE:
    System.out.println("蓝色");
    break;
  }
 }
}

執行上述程式碼輸出結果為:

#藍色

values(), ordinal() 和valueOf() 方法

enum 定義的枚舉類別預設繼承了java.lang.Enum 類,並實作了java. lang.Seriablizable 和java.lang.Comparable 兩個介面。


values(), ordinal() 和 valueOf() 方法位於 java.lang.Enum 類別中:

values() 傳回枚舉類別中所有的值。

ordinal()方法可以找到每個枚舉常數的索引,就像陣列索引一樣。 valueOf()方法傳回指定字串值的枚舉常數。

enum Color
{
  RED, GREEN, BLUE;
}
 
public class Test
{
  public static void main(String[] args)
  {
    // 调用 values()
    Color arr[] = Color.values();
 
    // 迭代枚举
    for (Color col : arr)
    {
      // 查看索引
      System.out.println(col + " at index " + col.ordinal());
    }
 
    // 使用 valueOf() 返回枚举常量,不存在的会报错 IllegalArgumentException
    System.out.println(Color.valueOf("RED"));
    // System.out.println(Color.valueOf("WHITE"));
  }
}

執行上述程式碼輸出結果為:

RED at index 0

GREEN at index 1
BLUE at index 2

RED



枚舉類別成員

枚舉跟普通類別一樣可以用自己的變數、方法和建構函數,建構子只能使用private 存取修飾符,所以外部無法呼叫。 枚舉既可以包含具體方法,也可以包含抽象方法。如果枚舉類別具有抽象方法,則枚舉類別的每個實例都必須實現它。

enum Color
{
  RED, GREEN, BLUE;
 
  // 构造函数
  private Color()
  {
    System.out.println("Constructor called for : " + this.toString());
  }
 
  public void colorInfo()
  {
    System.out.println("Universal Color");
  }
}
 
public class Test
{  
  // 输出
  public static void main(String[] args)
  {
    Color c1 = Color.RED;
    System.out.println(c1);
    c1.colorInfo();
  }
}
###執行上述程式碼輸出結果為:#########Constructor called for : RED###Constructor called for : GREEN###Constructor called for : BLUE###RED## #Universal Color#########推薦教學:《###Java教學###》###

以上是JAVA 枚舉(enum)詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:jb51.net。如有侵權,請聯絡admin@php.cn刪除