W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
枚舉類型定義了兩件事:
以下代碼聲明了一個(gè)名為Level的公共枚舉類型,它具有四個(gè)枚舉常量:LOW,MEDIUM,HIGH和URGENT。
public enum Level { LOW, MEDIUM, HIGH, URGENT; }
Level枚舉類型定義了四個(gè)枚舉常量。
Level枚舉類型的變量只能有四個(gè)值之一 - LOW,MEDIUM,HIGH和URGENT或null。
我們可以使用點(diǎn)符號通過使用枚舉類型名稱作為限定符來引用枚舉常量。
以下代碼將值分配給Level枚舉類型的變量:
Level low = Level.LOW; Level medium = Level.MEDIUM; Level high = Level.HIGH; Level urgent = Level.URGENT;
我們不能實(shí)例化枚舉類型。以下代碼導(dǎo)致編譯時(shí)錯(cuò)誤:
Level badAttempt = new Level(); // A compile-time error
枚舉類型為其所有常量分配一個(gè)順序號,稱為ordinal。
序數(shù)從零開始,在常數(shù)列表中從第一個(gè)到最后一個(gè)遞增1。
第一個(gè)枚舉常量賦值為零,第二個(gè)為1,第三個(gè)為2,依此類推。
分配給Level枚舉類型中聲明的常量的序數(shù)值為0到LOW,1到MEDIUM,2到HIGH,以及3到URGENT。
每個(gè)枚舉常量都有一個(gè)與常量的標(biāo)識符相同的名稱。例如,級別枚舉類型中的LOW常數(shù)的名稱為“LOW”。
我們可以分別使用name()和ordinal()方法獲取枚舉常量的名稱和序號。
每個(gè)枚舉類型都有一個(gè)名為values()的靜態(tài)方法,它按它們在正文中聲明的順序返回一個(gè)常量數(shù)組。
以下代碼打印在Level枚舉類型中聲明的所有枚舉常量的名稱和序號。
enum Level { LOW, MEDIUM, HIGH, URGENT; } public class Main { public static void main(String[] args) { for (Level s : Level.values()) { String name = s.name(); int ordinal = s.ordinal(); System.out.println(name + "(" + ordinal + ")"); } } }
上面的代碼生成以下結(jié)果。
我們可以從名稱或位置獲得枚舉常量的引用。使用valueOf()方法。
枚舉常量的反向查找區(qū)分大小寫。
我們可以使用values()方法返回的數(shù)組,通過順序執(zhí)行反向查找。
values()方法返回的數(shù)組中的值的順序與枚舉常量的聲明順序相同。
枚舉常量的序數(shù)從零開始。
以下代碼演示了如何反轉(zhuǎn)查找枚舉常量:
enum Level { LOW, MEDIUM, HIGH, URGENT; } public class Main { public static void main(String[] args) { Level low1 = Level.valueOf("LOW"); // A reverse lookup using a name Level low2 = Level.values()[0]; // A reverse lookup using an ordinal System.out.println(low1); System.out.println(low2); System.out.println(low1 == low2); } }
上面的代碼生成以下結(jié)果。
java.util.EnumSet集合類與枚舉類型的枚舉常量列表一起使用。
下面的代碼演示了如何使用EnumSet類來處理枚舉常量的范圍。
import java.util.EnumSet; enum Level { LOW, MEDIUM, HIGH, URGENT; } public class Main { public static void main(String[] args) { EnumSet<Level> allLevels = EnumSet.allOf(Level.class); print(allLevels); EnumSet<Level> l = EnumSet.range(Level.LOW, Level.URGENT); print(l); } public static void print(EnumSet<Level> levels) { for (Level d : levels) { System.out.println(d + " "); } } }
上面的代碼生成以下結(jié)果。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: