国产毛多水多高潮高清,久热这里只有精品视频6,国内精品久久久久久久久电影网,国产男同志CHINA69,精品999日本久久久影院,人人妻人人澡人人爽人人精品,亚洲中文无码永久免

Java进阶-开云og

Java进阶

2026-01-18 06:57:24投稿人:開云od(新疆)有限公司圍觀975463 評(píng)論

Java進(jìn)階_枚舉 enum

1 枚舉引入

Java是一門面向?qū)ο蟮恼Z言,當(dāng)我們創(chuàng)建好一個(gè)類以后 ,可以創(chuàng)建這個(gè)類的多個(gè)對(duì)象

但是一個(gè)類究竟創(chuàng)建多少個(gè)對(duì)象,并且對(duì)象代表的值我們是無法限制的

所以,如果開發(fā)中需要一組值 ,需要的數(shù)據(jù)是明確的,就可以使用枚舉

2 枚舉概念

枚舉類是一種特殊形式的Java類 ,枚舉類的對(duì)象個(gè)數(shù)是有限且明確的。比如:

星期:Monday(星期一)…Sunday(星期天)

性別:Man(男) 、Woman(女)

季節(jié):Spring(春天)…Winter(冬天)

支付方式:Cash(現(xiàn)金)、WeChatpay(微信支付)、AliPay(支付寶支付) 、BankCard(銀行卡支付) 、CreditCard(信用卡支付)

訂單狀態(tài):Nonpayment(未付款)、Paid(已付款)、Fulfilled(已配貨)、Delivered(已發(fā)貨) 、Return(退貨) 、Checked(已收貨)

所以 ,如果當(dāng)我們需要定義一組常量表示不同的狀態(tài)時(shí)  ,就建議使用枚舉類

JDK5以前是需要自定義枚舉類的,JDK5以后可以使用關(guān)鍵字enum來定義枚舉類

我們先來用傳統(tǒng)class的方式來實(shí)現(xiàn)自定義枚舉類:

3 自定義枚舉類

枚舉類中聲明的每一個(gè)枚舉值代表枚舉類的一個(gè)實(shí)例對(duì)象

與Java中的普通類一樣,在聲明枚舉類時(shí)  ,也可以聲明屬性、方法和構(gòu)造函數(shù)

但是枚舉類的構(gòu)造函數(shù)必須為私有的 ,我們一起來練習(xí)一下  :

package cn.cxy.exec;

/*本類用于自定義枚舉類*/

public class SeasonTest {

public static void main(String[] args) {

System.out.println(Season.SPRING.getSEASON_NAME());//春季

System.out.println(Season.SUMMER.getSEASON_DESC());//夏日炎炎

System.out.println(Season.AUTUMN);

//Season{ SEASON_NAME='秋季', SEASON_DESC='秋高氣爽'}

}

}

//1.自定義枚舉類

class Season{

//2.定義本類的私有屬性,為了防止值被修改,需要設(shè)置為final

private final String SEASON_NAME;//季節(jié)名

private final String SEASON_DESC;//季節(jié)描述

//3.私有化本類的構(gòu)造方法--防止外界隨意創(chuàng)建本類對(duì)象

private Season(String seasonName,String seasonDesc){

this.SEASON_NAME = seasonName;//在構(gòu)造中給本類的屬性賦值

this.SEASON_DESC = seasonDesc;

}

//4.提供當(dāng)前枚舉類的多個(gè)對(duì)象

public final static Season SPRING = new Season("春季","春暖花開");

public final static Season SUMMER = new Season("夏季","夏日炎炎");

public final static Season AUTUMN = new Season("秋季","秋高氣爽");

public final static Season WINTER = new Season("冬季","冬雪凜凜");

//5.生成對(duì)應(yīng)的get的方法,獲取本類的兩個(gè)屬性值

public String getSEASON_NAME() {

return SEASON_NAME;

}

public String getSEASON_DESC() {

return SEASON_DESC;

}

//6.生成toString方法方便查看

@Override

public String toString() {

return "Season{ " +

"SEASON_NAME='" + SEASON_NAME + ''' +

", SEASON_DESC='" + SEASON_DESC + ''' + '}';

}

}

4 使用關(guān)鍵字enum定義枚舉類

package cn.cxy.exec;

/*本類用于使用enum關(guān)鍵字定義枚舉類*/

public class ColorTest {

public static void main(String[] args) {

//6.進(jìn)行測(cè)試

System.out.println(403 Forbidden);//RED

System.out.println(Color.ORANGE.getCOLOR_NAME());//橙色

System.out.println(Color.ORANGE.getCOLOR_NUMBER());//2

}

}

//1.使用enum關(guān)鍵字定義枚舉類

enum Color {

//2.寫出本類對(duì)應(yīng)的多個(gè)枚舉對(duì)象

/*1.public static final可以省略不寫

* 2.枚舉對(duì)象不能像自定義枚舉類對(duì)象時(shí)new,要按照下面的語法 :

* 枚舉名1(值1 ,值2) ,枚舉名2(值1 ,值2),枚舉名3(值1 ,值2);

* 3.不需要生成toString,因?yàn)槭褂胑num關(guān)鍵字定義的枚舉類繼承了java.lang.Enum

* 在Enum中重寫了繼承自O(shè)bject的toString(),直接打印的就是枚舉名*/

RED("紅色",1),

ORANGE("橙色",2),

YELLOW("黃色",3),

GREEN("綠色",4),

CYAN("青色",5),

BLUE("藍(lán)色",6),

PURPLE("紫色",7);

//3.定義枚舉類的多個(gè)私有屬性

private final String COLOR_NAME;

private final int COLOR_NUMBER;

//4.定義本類的構(gòu)造方法

private Color(String colorName, int colorNumber) {

this.COLOR_NAME = colorName;

this.COLOR_NUMBER = colorNumber;

}

//5.生成屬性對(duì)應(yīng)的兩個(gè)get()

public String getCOLOR_NAME() {

return COLOR_NAME;

}

public int getCOLOR_NUMBER() {

return COLOR_NUMBER;

}

}

總結(jié):

1.public static final可以省略不寫

2.枚舉對(duì)象不能像自定義枚舉類對(duì)象時(shí)new,要按照下面的語法 :

枚舉名1(值1,值2) ,枚舉名2(值1 ,值2),枚舉名3(值1 ,值2);

3.不需要生成toString,因?yàn)槭褂胑num關(guān)鍵字定義的枚舉類繼承了java.lang.Enum

在Enum中重寫了繼承自O(shè)bject的toString(),直接打印的就是枚舉名

5 實(shí)現(xiàn)接口的枚舉類

枚舉類也可以實(shí)現(xiàn)接口、或繼承抽象類,有兩種實(shí)現(xiàn)方案 :

方案一 :枚舉類與接口建立實(shí)現(xiàn)關(guān)系 ,在枚舉類中實(shí)現(xiàn)接口中定義的抽象方法

效果 :每個(gè)枚舉對(duì)象調(diào)用實(shí)現(xiàn)后的方法都是同一個(gè)效果

方案二