深入淺出講解Java中的枚舉類
背景:類的對象只有有限個,確定的。舉例如下:
> 星期: Monday (星期一)、….、 Sunday (星期天)
> 性別: Man (男)、 Woman (女)
> 季節(jié): Spring (春節(jié)).…….. Winter (冬天)
> 支付方式: Cash (現(xiàn)金)、 WeChatPay (微信)、 Alipay (支付寶) BankCard (銀
行卡)、 CreditCard (信用卡)
> 就職狀態(tài): Busy 、 Free 、 Vocation 、 Dimission
> 訂單狀態(tài): Nonpayment (未付款)、 Paid (已付款)、 Fulfilled (已配貨)、
Delivered (已發(fā)貨)、 Return 退貨》 Checked 已確認(rèn))
> 線程狀態(tài):創(chuàng)建、就緒、運(yùn)行、阻塞、死立
一、枚舉類的使用
1.枚舉類的理解:類的對象只有有限個,確定的。我們稱此類為枚舉類
2.當(dāng)需要定義一組常量時,強(qiáng)烈建議使用枚舉類
3.如果枚舉類中只有一個對象,則可以作為單例模式的實(shí)現(xiàn)方式。
二、如何定義枚舉類
方式一:JDK5.0之前,自定義枚舉類
public class SeasonTest {
public static void main(String[] args) {
Season spring = Season.SPRING;
System.out.println(spring);
}
}
class Season {
//1.聲明Season對象的屬性:private final修飾
private final String seasonName;
private final String seasonDesc;
//2.私有化類的構(gòu)造器,并給對象屬性賦值
private Season(String seasonName, String seasonDesc) {
this.seasonName = seasonName;
this.seasonDesc = seasonDesc;
}
//3.提供當(dāng)前枚舉類的對各對象:public static final的
public static final Season SPRING = new Season("春天", "春暖花開");
public static final Season SUMMER = new Season("夏天", "夏日炎炎");
public static final Season AUTUMN = new Season("秋天", "秋高氣爽");
public static final Season WINTER = new Season("冬天", "冰天雪地");
//4.其他訴求1: 獲取枚舉類對象的屬性
public String getSeasonName() {
return seasonName;
}
public String getSeasonDesc() {
return seasonDesc;
}
//4.其他訴求2:提供toString()
@Override
public String toString() {
return "Season{" +
"seasonName='" + seasonName + '\'' +
", seasonDesc='" + seasonDesc + '\'' +
'}';
}
}
方式二:JDK5.0之后,可以使用enum關(guān)鍵字定義枚舉類

public class SeasonTest1 {
public static void main(String[] args) {
Season1 summer = Season1.SUMMER;
System.out.println(summer);
System.out.println(Season1.class.getSuperclass());//java.lang.Enum
//values():
Season1[] values = Season1.values();
for (int i = 0; i < values.length; i++) {
System.out.println(values[i]);
}
//valueOf(String objName):返回枚舉類中對象時objName的對象。
Season1 winter = Season1.valueOf("WINTER");
//如果沒有objName的枚舉類對象,則拋異常:IllegalArgumentException
// Season1 winter = Season1.valueOf("WINTER1");
System.out.println(winter);
// winter.show();
}
//使用enum關(guān)鍵字定義枚舉類
enum Season1 {
//1.提供當(dāng)前枚舉類的對象,多個對象之間用","隔開,末尾對象";"結(jié)束
SPRING("春天", "春暖花開"),
SUMMER("夏天", "夏日炎炎"),
AUTUMN("秋天", "秋高氣爽"),
WINTER("冬天", "冰天雪地");
//1.聲明Season對象的屬性:private final修飾
private final String seasonName;
private final String seasonDesc;
//2.私有化類的構(gòu)造器,并給對象屬性賦值
private Season1(String seasonName, String seasonDesc) {
this.seasonName = seasonName;
this.seasonDesc = seasonDesc;
}
//4.其他訴求1: 獲取枚舉類對象的屬性
public String getSeasonName() {
return seasonName;
}
public String getSeasonDesc() {
return seasonDesc;
}
使用enum關(guān)鍵字定義的枚舉類實(shí)現(xiàn)接口的情況
情況一:實(shí)現(xiàn)接口,在enum類中實(shí)現(xiàn)抽象方法
情況二:讓枚舉類的對象分別實(shí)現(xiàn)接口中的抽象方法
public class SeasonTest1 {
public static void main(String[] args) {
//values():
Season1[] values = Season1.values();
for (int i = 0; i < values.length; i++) {
System.out.println(values[i]);
values[i].show();
}
}
interface Info {
void show();
}
enum Season1 implements Info {
SPRING("春天", "春暖花開") {
@Override
public void show() {
System.out.println("春天在哪里");
}
},
SUMMER("夏天", "夏日炎炎") {
@Override
public void show() {
System.out.println("寧夏");
}
},
AUTUMN("秋天", "秋高氣爽") {
@Override
public void show() {
System.out.println("秋天不回來");
}
},
WINTER("冬天", "冰天雪地") {
@Override
public void show() {
System.out.println("大約在冬季");
}
};
private final String seasonName;
private final String seasonDesc;
private Season1(String seasonName, String seasonDesc) {
this.seasonName = seasonName;
this.seasonDesc = seasonDesc;
}
public String getSeasonName() {
return seasonName;
}
public String getSeasonDesc() {
return seasonDesc;
}
}
到此這篇關(guān)于深入淺出講解Java中的枚舉類的文章就介紹到這了,更多相關(guān)Java 枚舉類內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用java代碼代替xml實(shí)現(xiàn)SSM教程
這篇文章主要介紹了使用java代碼代替xml實(shí)現(xiàn)SSM教程,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-12-12
SpringMVC中解決@ResponseBody注解返回中文亂碼問題
這篇文章主要介紹了SpringMVC中解決@ResponseBody注解返回中文亂碼問題, 小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-04-04
啟動 Eclipse 彈出 Failed to load the JNI shared library jvm.dll
這篇文章主要介紹了有時候,新電腦上回碰到打開Eclipse時,彈出提示“Failed to load the JNI shared library jvm.dll”錯誤,這里給大家分享解決方案2016-08-08

