Java 枚舉類型

2018-01-19 14:51 更新

Java面向對象設計 - Java枚舉類型

什么是枚舉類型?

枚舉類型創(chuàng)建常量的有序列表作為類型。它以特定順序指定常量。

在枚舉類型中定義的常量是該枚舉類型的實例。

語法

使用關鍵字enum使用以下語法定義枚舉類型:

<access-modifier> enum <enum-type-name>  {
    // List of  comma  separated names of  enum constants
}

<access-modifiers>與類的訪問修飾符相同:public,private,protected或package-level。

<enum-type-name>是有效的Java標識符。

枚舉類型的主體放在大括號中,名稱后面。主體可以有逗號分隔的常量和其他元素的列表,例如實例變量,方法等。

大多數(shù)時候,枚舉體只包括常量。

例子

下面的代碼聲明了一個名為Gender的枚舉類型,它聲明了兩個常量:MALE和FEMALE:

public enum Gender  {
    MALE,  FEMALE;  // The semi-colon is optional
}

將枚舉常量命名為大寫是一種慣例。

以下代碼聲明了一個名為Level的公共枚舉類型,它具有四個枚舉常量:LOW,MEDIUM,HIGH和URGENT。

public enum Level {
    LOW,  MEDIUM,  HIGH, URGENT;
}

可以從應用程序中的任何位置訪問公共枚舉類型。

公共枚舉類型保留在具有枚舉類型名稱的文件中。級別枚舉將保存在名為Level.java的文件中。

我們需要在包中放置枚舉類型,我們可以使用 import 語句導入枚舉類型。

枚舉變量

我們可以聲明枚舉類型的變量,就像聲明類類型的變量一樣。

以下代碼聲明Level枚舉類型的errorLevel變量。

Level errorLevel;

您可以為枚舉類型變量分配null,如下所示:

Level defectLevel = null;

在switch語句中使用枚舉類型

您可以在switch語句中使用枚舉類型。

當switch表達式是枚舉類型時,所有case標簽必須是同一枚舉類型的不合格枚舉常量。

enum Direction {
  East, South, West, North
}

public class Main {
  public static void main(String args[]) {
    Direction dir = Direction.South;
    switch (dir) {
    case South:
      System.out.println("south");
      break;
    case East:
      System.out.println("East");
      break;
    case West:
      System.out.println("West");
      break;
    case North:
      System.out.println("North.");
      break;
    }
  }
}

上面的代碼生成以下結果。

嵌套枚舉類型

我們可以在類,接口或另一個枚舉類型中有一個嵌套的枚舉類型聲明。

嵌套枚舉類型是隱式靜態(tài)的。因為枚舉類型總是靜態(tài)的,所以我們不能在方法體內聲明一個局部枚舉類型。

對于嵌套枚舉類型,我們可以使用任何訪問修飾符(public,private,protected或package)級別。

以下代碼顯示了如何在Person類中聲明名為Gender的嵌套公共枚舉類型。

class Person {
  public enum Gender {
    MALE, FEMALE
  }
}

public class Main {
  public static void main(String[] args) {
    Person.Gender m = Person.Gender.MALE;
    Person.Gender f = Person.Gender.FEMALE;
    System.out.println(m);
    System.out.println(f);
  }
}

Person.Gender枚舉類型可以從應用程序中的任何位置訪問,因為它已被聲明為public。

我們也可以通過使用靜態(tài)導入導入枚舉常量來使用枚舉常量的簡單名稱。

import static  com.w3cschool.enums.Person.Gender.*;

實現(xiàn)枚舉類型的接口

枚舉類型可以實現(xiàn)接口。實現(xiàn)接口的枚舉類型的規(guī)則與實現(xiàn)接口的類的規(guī)則相同。

下面的代碼演示了如何讓enum類型實現(xiàn)一個接口。
interface Command {
  void execute();
}

enum Level implements Command {
  LOW {
    public void execute() {
      System.out.println("Low...");
    }
  },
  HIGH {
    public void execute() {
      System.out.println("HIGH...");
    }
  };
  public abstract void execute();
}

public class Main {
  public static void main(String... args) {
    for (Command cmd : Level.values()) {
      cmd.execute();
    }
  }
}

上面的代碼生成以下結果。

以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號