更新時(shí)間:2022-11-22 09:30:55 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽1235次
Java 枚舉是一種 Java 類(lèi)型類(lèi),用于根據(jù)您自己的需要為您的軟件定義常量集合。Java 枚舉中的每一項(xiàng)都稱(chēng)為常量,一個(gè)不可變的變量——一個(gè)不能更改的值。常量經(jīng)常用于幫助定義軟件或用戶(hù)的操作參數(shù)和指南。
創(chuàng)建枚舉是一項(xiàng)簡(jiǎn)單的任務(wù),不需要太多討論。聲明枚舉是使用標(biāo)準(zhǔn)語(yǔ)法完成的,看起來(lái)很像聲明Java 類(lèi)。唯一真正的區(qū)別是它使用專(zhuān)門(mén)為枚舉保留的唯一關(guān)鍵字,并且它們是類(lèi)型安全的對(duì)象。類(lèi)型安全對(duì)象在編譯時(shí)檢查類(lèi)型一致性,并且
public enum AuthLvl {
ADMIN,
USER,
UNAUTHORIZED
}
上面的代碼可用于創(chuàng)建一個(gè)枚舉,用于在登錄時(shí)設(shè)置用戶(hù)的授權(quán)級(jí)別。要訪問(wèn)常量,您只需像調(diào)用類(lèi)類(lèi)型(例如String或int )一樣調(diào)用它,然后將其分配給一個(gè)變量,然后該變量將附加到用戶(hù)。讓我們看一下用于訪問(wèn)上述常量之一并將其分配給用戶(hù)的語(yǔ)法。
AuthLvl userLvl = AuthLvl.ADMIN;
名為 userLvl 的變量將具有與聲明的枚舉類(lèi)型同名的類(lèi)型,其值將是常量之一。在此示例中,userLvl設(shè)置為 ADMIN 的值,它作為AuthLvl類(lèi)型類(lèi)的屬性訪問(wèn)。
Java Enum 的偉大之處在于常量除了名稱(chēng)之外還可以有值。例如,可以將特定權(quán)限添加為 ADMIN 級(jí)別用戶(hù)的值,例如授予他們寫(xiě)入權(quán)限。
讓我們使用我們的用戶(hù)身份驗(yàn)證和權(quán)限示例看看代碼是什么樣的。
public enum Auth {
ADMIN("Write");
public final String permission;
private Auth(String permission) {
this.permission = permission;
}
}
上面代碼中的 ADMIN 常量中添加了一個(gè)新的字符串值“Write”。這是朝著正確方向邁出的重要一步,但您仍然無(wú)法訪問(wèn)該值。為了確保訪問(wèn)可用,Java 要求將值分配為final,這是另一種類(lèi)型的常量。
public final String permission;
從那里您可以更進(jìn)一步,并為該值命名。命名該值允許通過(guò)多種方式訪問(wèn)??它,以便在需要時(shí)更容易定位。要命名枚舉常量的值,您需要將其分配給枚舉的this值。您可以多次完成此過(guò)程,以創(chuàng)建您認(rèn)為合適的值并將值添加到枚舉常量。
private Auth(String permission) {
this.permission = permission;
}
到目前為止,您已經(jīng)將枚舉和命名常量聲明為它的值,從而擴(kuò)展了它的用途。此外,在這一點(diǎn)上,您甚至通過(guò)將值分配給枚舉的這個(gè)屬性來(lái)為該值指定一個(gè)標(biāo)簽。這樣做的好處是您可以使用點(diǎn)表示法按名稱(chēng)檢索值。以下代碼片段顯示了如何定位此值并將其打印到控制臺(tái)。
這種標(biāo)記進(jìn)一步擴(kuò)展了枚舉及其常量的功能,使它們更加靈活和健壯。
接下來(lái),讓我們看看我們可以將此枚舉合并到我們的代碼中的方法。
枚舉的主要用途是比較,就像我們的簡(jiǎn)單 auth 枚舉示例一樣。使用它,您可以將用戶(hù)的授權(quán)級(jí)別與其各自的權(quán)限進(jìn)行比較。比較運(yùn)算可用于if塊、switch語(yǔ)句、函數(shù)、循環(huán)等。
讓我們看一下這些用途的幾個(gè)示例,看看如何執(zhí)行這些比較。
String[] currUser = {"John Smith", "Write"};
if(Auth.ADMIN.permission == currUser[1]){
System.out.println(true);
}
在主類(lèi)中編寫(xiě)的這個(gè)設(shè)置將檢查當(dāng)前用戶(hù)的授權(quán)級(jí)別和權(quán)限,然后執(zhí)行指定的操作。這可以用來(lái)驗(yàn)證用戶(hù)是否有權(quán)在軟件中執(zhí)行某些操作,例如編輯信息。
現(xiàn)在您已經(jīng)了解了如何使用它進(jìn)行比較,讓我們看一下 switch 語(yǔ)句中枚舉的實(shí)際用例。
使用枚舉進(jìn)行比較驗(yàn)證的最實(shí)用方法之一是將其與 switch 語(yǔ)句結(jié)合使用。Switch 語(yǔ)句提供了一種為軟件操作參數(shù)創(chuàng)建顯式控制的方法。結(jié)合枚舉常量的優(yōu)勢(shì),設(shè)置控制參數(shù)變得更加簡(jiǎn)單。
下面的視頻說(shuō)明了如何使用 switch 語(yǔ)句設(shè)置枚舉。
讓我們看一下將Auth枚舉與 switch 語(yǔ)句相結(jié)合的代碼片段。
String[] currUser = {"John Smith", Auth.USER.toString()};
switch (currUser[1]) {
case "ADMIN":
Auth level = Auth.ADMIN;
System.out.println("You have logged in as an Administrator ");
break;
case "USER":
Auth level = Auth.ADMIN;
System.out.println(Auth.USER);
break;
case "UNAUTHORIZED":
Auth level = Auth.ADMIN;
System.out.println(Auth.UNAUTHORIZED);
break;
}
請(qǐng)注意toString()方法的使用,該方法將常量轉(zhuǎn)換為Java 字符串以用于currUser數(shù)組。switch 語(yǔ)句比較每個(gè) case 的字符串,如果提供的 case 匹配,它將執(zhí)行一個(gè)操作。此 switch 語(yǔ)句根據(jù)currUser數(shù)組中的第二個(gè)值設(shè)置當(dāng)前用戶(hù)級(jí)別。
在此示例中,如果大小寫(xiě)匹配,則等效的枚舉常量將分配給名為 level 的 Auth 類(lèi)型變量。然后使用當(dāng)前用戶(hù)會(huì)話(huà)來(lái)定義用戶(hù)的操作參數(shù)和權(quán)限。
Java 枚舉是一個(gè)功能強(qiáng)大的工具,可用于執(zhí)行大量操作、設(shè)置控件、參數(shù)等。知道如何確定它們何時(shí)最有用將主要來(lái)自實(shí)踐。有一個(gè)很好的經(jīng)驗(yàn)法則,即考慮一個(gè)值是否只能具有一組特定的不可變值中的一個(gè)。
相關(guān)閱讀
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話(huà)與您溝通安排學(xué)習(xí)
初級(jí) 202925
初級(jí) 203221
初級(jí) 202629
初級(jí) 203743