欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

深入淺出講解Java中的枚舉類(lèi)

 更新時(shí)間:2021年09月13日 15:46:49   作者:威斯布魯克.猩猩  
這篇文章主要介紹了深入淺出講解Java中的枚舉類(lèi),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

背景:類(lèi)的對(duì)象只有有限個(gè),確定的。舉例如下:
> 星期: 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)行、阻塞、死立

一、枚舉類(lèi)的使用

1.枚舉類(lèi)的理解:類(lèi)的對(duì)象只有有限個(gè),確定的。我們稱(chēng)此類(lèi)為枚舉類(lèi)
2.當(dāng)需要定義一組常量時(shí),強(qiáng)烈建議使用枚舉類(lèi)
3.如果枚舉類(lèi)中只有一個(gè)對(duì)象,則可以作為單例模式的實(shí)現(xiàn)方式。

二、如何定義枚舉類(lèi)

方式一:JDK5.0之前,自定義枚舉類(lèi)

public class SeasonTest {
    public static void main(String[] args) {
        Season spring = Season.SPRING;
        System.out.println(spring);
    }
}
    class Season {
        //1.聲明Season對(duì)象的屬性:private final修飾
        private final String seasonName;
        private final String seasonDesc;
        //2.私有化類(lèi)的構(gòu)造器,并給對(duì)象屬性賦值
        private Season(String seasonName, String seasonDesc) {
            this.seasonName = seasonName;
            this.seasonDesc = seasonDesc;
        }
        //3.提供當(dāng)前枚舉類(lèi)的對(duì)各對(duì)象:public static final的
        public static final Season SPRING = new Season("春天", "春暖花開(kāi)");
        public static final Season SUMMER = new Season("夏天", "夏日炎炎");
        public static final Season AUTUMN = new Season("秋天", "秋高氣爽");
        public static final Season WINTER = new Season("冬天", "冰天雪地");
        //4.其他訴求1:  獲取枚舉類(lèi)對(duì)象的屬性
        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)鍵字定義枚舉類(lèi)

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):返回枚舉類(lèi)中對(duì)象時(shí)objName的對(duì)象。
        Season1 winter = Season1.valueOf("WINTER");
        //如果沒(méi)有objName的枚舉類(lèi)對(duì)象,則拋異常:IllegalArgumentException
//        Season1 winter = Season1.valueOf("WINTER1");
        System.out.println(winter);
//        winter.show();
    }
    //使用enum關(guān)鍵字定義枚舉類(lèi)
    enum Season1 {
        //1.提供當(dāng)前枚舉類(lèi)的對(duì)象,多個(gè)對(duì)象之間用","隔開(kāi),末尾對(duì)象";"結(jié)束
        SPRING("春天", "春暖花開(kāi)"),
        SUMMER("夏天", "夏日炎炎"),
        AUTUMN("秋天", "秋高氣爽"),
        WINTER("冬天", "冰天雪地");
        //1.聲明Season對(duì)象的屬性:private final修飾
        private final String seasonName;
        private final String seasonDesc;
 
        //2.私有化類(lèi)的構(gòu)造器,并給對(duì)象屬性賦值
        private Season1(String seasonName, String seasonDesc) {
            this.seasonName = seasonName;
            this.seasonDesc = seasonDesc;
        }
        //4.其他訴求1:  獲取枚舉類(lèi)對(duì)象的屬性
        public String getSeasonName() {
            return seasonName;
        }
        public String getSeasonDesc() {
            return seasonDesc;
        }

使用enum關(guān)鍵字定義的枚舉類(lèi)實(shí)現(xiàn)接口的情況
情況一:實(shí)現(xiàn)接口,在enum類(lèi)中實(shí)現(xiàn)抽象方法

情況二:讓枚舉類(lèi)的對(duì)象分別實(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("春天", "春暖花開(kāi)") {
            @Override
            public void show() {
                System.out.println("春天在哪里");
            }
        },
        SUMMER("夏天", "夏日炎炎") {
            @Override
            public void show() {
                System.out.println("寧夏");
            }
        },
        AUTUMN("秋天", "秋高氣爽") {
            @Override
            public void show() {
                System.out.println("秋天不回來(lái)");
            }
        },
        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中的枚舉類(lèi)的文章就介紹到這了,更多相關(guān)Java 枚舉類(lèi)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 使用java代碼代替xml實(shí)現(xiàn)SSM教程

    使用java代碼代替xml實(shí)現(xiàn)SSM教程

    這篇文章主要介紹了使用java代碼代替xml實(shí)現(xiàn)SSM教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • Java?超詳細(xì)講解對(duì)象的構(gòu)造及初始化

    Java?超詳細(xì)講解對(duì)象的構(gòu)造及初始化

    面向?qū)ο竽耸荍ava語(yǔ)言的核心,是程序設(shè)計(jì)的思想。Java語(yǔ)言的面向?qū)ο蠹夹g(shù)包括了面向?qū)ο蠛兔嫦蜻^(guò)程的基本概念,面向?qū)ο蟮奶卣?,Java語(yǔ)言的類(lèi),對(duì)象,修飾符,抽象類(lèi)等一系列的知識(shí)點(diǎn)
    2022-03-03
  • Java使用poi包讀取Excel文檔代碼分享

    Java使用poi包讀取Excel文檔代碼分享

    這篇文章主要介紹了Java使用poi包讀取Excel文檔代碼分享,具有一定借鑒價(jià)值,需要的朋友可以參考下。
    2017-12-12
  • Java中的TreeMap底層源碼分析

    Java中的TreeMap底層源碼分析

    這篇文章主要介紹了Java中的TreeMap底層源碼分析,TreeMap與Hashmap、LinkedHashMap不同,他的底層不再是數(shù)組,而是一顆紅黑樹(shù),在插入、刪除或者替換元素時(shí),TreeMap能按照事先約定的順序來(lái)對(duì)key進(jìn)行排序和迭代查詢(xún),需要的朋友可以參考下
    2023-12-12
  • Mybatis圖文并茂講解分頁(yè)插件

    Mybatis圖文并茂講解分頁(yè)插件

    使用過(guò)mybatis的人都知道,mybatis本身就很小且簡(jiǎn)單,sql寫(xiě)在xml里,統(tǒng)一管理和優(yōu)化。缺點(diǎn)當(dāng)然也有,比如我們使用過(guò)程中,要使用到分頁(yè),如果用最原始的方式的話,1.查詢(xún)分頁(yè)數(shù)據(jù),2.獲取分頁(yè)長(zhǎng)度,也就是說(shuō)要使用到兩個(gè)方法才能完成分頁(yè)
    2022-07-07
  • SpringMVC中解決@ResponseBody注解返回中文亂碼問(wèn)題

    SpringMVC中解決@ResponseBody注解返回中文亂碼問(wèn)題

    這篇文章主要介紹了SpringMVC中解決@ResponseBody注解返回中文亂碼問(wèn)題, 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-04-04
  • 淺析Jmeter多用戶(hù)token使用問(wèn)題

    淺析Jmeter多用戶(hù)token使用問(wèn)題

    這篇文章主要介紹了Jmeter多用戶(hù)token使用問(wèn)題,通過(guò)具體的例子給大家介紹了Jmeter多用戶(hù)token使用場(chǎng)景接口分析,需要的朋友可以參考下
    2021-10-10
  • 啟動(dòng) Eclipse 彈出 Failed to load the JNI shared library jvm.dll 錯(cuò)誤的解決方法

    啟動(dòng) Eclipse 彈出 Failed to load the JNI shared library jvm.dll

    這篇文章主要介紹了有時(shí)候,新電腦上回碰到打開(kāi)Eclipse時(shí),彈出提示“Failed to load the JNI shared library jvm.dll”錯(cuò)誤,這里給大家分享解決方案
    2016-08-08
  • 淺談java的byte數(shù)組的不同寫(xiě)法

    淺談java的byte數(shù)組的不同寫(xiě)法

    下面小編就為大家?guī)?lái)一篇淺談java的byte數(shù)組的不同寫(xiě)法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-08-08
  • Java獲取兩個(gè)字符串中最大相同子串的方法

    Java獲取兩個(gè)字符串中最大相同子串的方法

    今天小編就為大家分享一篇Java獲取兩個(gè)字符串中最大相同子串的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-07-07

最新評(píng)論