Java自定義Enum的實(shí)現(xiàn)示例
Java 枚舉是一個(gè)特殊的類,一般表示一組常量,比如一年的 4 個(gè)季節(jié),一年的 12 個(gè)月份,一個(gè)星期的 7 天,方向有東南西北等。
一、常量:
Java 枚舉類使用enum關(guān)鍵字來定義,各個(gè)常量使用逗號(hào)“,”來分割。
定義一個(gè)顏色的枚舉類:
enum Color {
RED, GREEN, BLUE;
} 測(cè)試代碼:
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() 返回枚舉常量,不存在的會(huì)報(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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
解決java.lang.ClassCastException的java類型轉(zhuǎn)換異常的問題
這篇文章主要介紹了解決java.lang.ClassCastException的java類型轉(zhuǎn)換異常的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-09-09
基于Jav POI實(shí)現(xiàn)Excel多級(jí)表頭導(dǎo)出的完整方案
在日常的 Java 開發(fā)中,Excel 導(dǎo)出是高頻需求,而多級(jí)表頭 + 單元格合并的場(chǎng)景更是常見,,本文基于 Apache POI 框架,結(jié)合實(shí)際政務(wù)項(xiàng)目案例,詳解如何通過自定義注解 + 工具類的方式,需要的朋友可以參考下2026-02-02
Java自動(dòng)取款機(jī)ATM案例實(shí)現(xiàn)
本文主要介紹了Java自動(dòng)取款機(jī)ATM案例實(shí)現(xiàn),整個(gè)過程可以分為三部分:登錄賬戶和執(zhí)行取款操作,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-08-08
Spring Boot外部化配置實(shí)戰(zhàn)解析
這篇文章主要介紹了Spring Boot外部化配置實(shí)戰(zhàn)解析,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-06-06

