Java自定義Enum的實(shí)現(xiàn)示例
Java 枚舉是一個(gè)特殊的類,一般表示一組常量,比如一年的 4 個(gè)季節(jié),一年的 12 個(gè)月份,一個(gè)星期的 7 天,方向有東南西北等。
一、常量:
Java 枚舉類使用enum關(guān)鍵字來定義,各個(gè)常量使用逗號“,”來分割。
定義一個(gè)顏色的枚舉類:
enum Color { RED, GREEN, BLUE; }
測試代碼:
public class Test { // 執(zhí)行輸出結(jié)果 public static void main(String[] args) { Color c1 = Color.RED; System.out.println(c1); } } // 運(yùn)行結(jié)果 RED
二、switch:
switch 語句中的變量類型可以是: byte、short、int 或者 char。從 Java SE 7 開始,switch 支持字符串 String 類型了,同時(shí) case 標(biāo)簽必須為字符串常量或字面量。
示例:
enum ColorEnum { RED, GREEN, BLUE; } public class MyClass { public static void main(String[] args) { ColorEnum color= ColorEnum.BLUE; switch(color) { case RED: System.out.println("紅色"); break; case GREEN: System.out.println("綠色"); break; case BLUE: System.out.println("藍(lán)色"); break; } } }
運(yùn)行結(jié)果:
藍(lán)色
三、常用方法:
values(), ordinal() 和 valueOf() 方法
enum 定義的枚舉類默認(rèn)繼承了 java.lang.Enum 類,并實(shí)現(xiàn)了 java.lang.Serializable 和 java.lang.Comparable 兩個(gè)接口。
values(), ordinal() 和 valueOf() 方法位于 java.lang.Enum 類中:
- values() 返回枚舉類中所有的值。
- ordinal()方法可以找到每個(gè)枚舉常量的索引,就像數(shù)組索引一樣。
- valueOf()方法返回指定字符串值的枚舉常量。
enum Color { RED, GREEN, BLUE; } public class Test { public static void main(String[] args) { // 調(diào)用 values() Color[] colors = Color.values(); // 迭代枚舉 for (Color color : colors) { // 查看索引 System.out.println(color + " at index " + color.ordinal()); } // 使用 valueOf() 返回枚舉常量,不存在的會報(bào)錯(cuò) IllegalArgumentException System.out.println(Color.valueOf("RED")); // System.out.println(Color.valueOf("WHITE")); } }
執(zhí)行以上代碼輸出結(jié)果為:
RED at index 0
GREEN at index 1
BLUE at index 2
RED
四、枚舉類成員
枚舉跟普通類一樣可以用自己的變量、方法和構(gòu)造函數(shù),構(gòu)造函數(shù)只能使用 private 訪問修飾符,所以外部無法調(diào)用。
枚舉既可以包含具體方法,也可以包含抽象方法。 如果枚舉類具有抽象方法,則枚舉類的每個(gè)實(shí)例都必須實(shí)現(xiàn)它。
enum Color { RED, GREEN, BLUE; // 構(gòu)造函數(shù) 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(); } }
執(zhí)行以上代碼輸出結(jié)果為:
Constructor called for : RED
Constructor called for : GREEN
Constructor called for : BLUE
RED
Universal Color
到此這篇關(guān)于Java自定義Enum的實(shí)現(xiàn)示例的文章就介紹到這了,更多相關(guān)Java自定義Enum內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
基于SpringBoot接口+Redis解決用戶重復(fù)提交問題
當(dāng)網(wǎng)絡(luò)延遲的情況下用戶多次點(diǎn)擊submit按鈕導(dǎo)致表單重復(fù)提交,用戶提交表單后,點(diǎn)擊瀏覽器的【后退】按鈕回退到表單頁面后進(jìn)行再次提交也會出現(xiàn)用戶重復(fù)提交,辦法有很多,我這里只說一種,利用Redis的set方法搞定,需要的朋友可以參考下2023-10-10Java中的InputStreamReader和OutputStreamWriter源碼分析_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
本文通過示例代碼給大家解析了Java中的InputStreamReader和OutputStreamWriter知識,需要的的朋友參考下吧2017-05-05Spring?Validation中的用戶注冊、JWT令牌之用戶登入功能
本文介紹了使用SpringValidation進(jìn)行用戶注冊驗(yàn)證和JWT進(jìn)行用戶登錄的方法,在用戶注冊時(shí),通過@Validated注解和@Pattern注解對用戶名和密碼進(jìn)行格式校驗(yàn),并使用Result對象返回驗(yàn)證結(jié)果,感興趣的朋友一起看看吧2024-11-11Springboot內(nèi)外部logback多環(huán)境配置詳解
本文主要介紹了Springboot內(nèi)外部logback多環(huán)境配置詳解,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01Java中comparator接口和Comparable接口的比較解析
這篇文章主要介紹了Java中comparator接口和Comparable接口的比較解析,Java提供了一個(gè)用于比較的接口Comparator和Comparable接口,提供了一個(gè)比較的方法,所有實(shí)現(xiàn)該接口的類,都動(dòng)態(tài)的實(shí)現(xiàn)了該比較方法,需要的朋友可以參考下2023-08-08