W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
枚舉類型創(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表達式是枚舉類型時,所有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)接口的枚舉類型的規(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(); } } }
上面的代碼生成以下結果。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: