最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java中enum枚舉類型的基本特性詳解

 更新時(shí)間:2023年11月08日 08:43:28   作者:一只小熊貓呀  
這篇文章主要介紹了Java中enum枚舉類型的基本特性詳解,enum關(guān)鍵字用于創(chuàng)建一個(gè)新類型,其中包含一組數(shù)量有限的命名變量,并視這些變量為常規(guī)程序組件,實(shí)踐表明這是一種非常有用的類型,需要的朋友可以參考下

enum枚舉類型的基本特性

enum關(guān)鍵字用于創(chuàng)建一個(gè)新類型,其中包含一組數(shù)量有限的命名變量,并視這些變量為常規(guī)程序組件。實(shí)踐表明這是一種非常有用的類型

你可以調(diào)用枚舉類型中的 values() 方法來遍歷枚舉常量列表。values() 方法生成一個(gè)由枚舉常量組成的數(shù)組,其中常量的順序和常量聲明的順序保持一致,這樣你就可以方便地(比如通過for-in循環(huán))使用結(jié)果數(shù)組了。

當(dāng)創(chuàng)建枚舉類型時(shí),編譯器會(huì)為你生成一個(gè)輔助類,這個(gè)類自動(dòng)繼承自java.lang.Enum。java.lang.Enum提供了下例所示的一些功能:

EnumClass.java

enum Shrubbery {GROUND, CRAWLING, HANGING}
public class EnumClass {
    public static void main(String[] args) {
        for (Shrubbery s : Shrubbery.values()) {
            System.out.println(s + " ordinal: " + s.ordinal());
            System.out.print(s.compareTo(Shrubbery.CRAWLING) + " ");
            System.out.print(s.equals(Shrubbery.CRAWLING) + " ");
            System.out.println(s == Shrubbery.CRAWLING);
            System.out.println(s.getDeclaringClass());
            System.out.println(s.name());
            System.out.println("********************");
        }
        // Produce an enum value from a String name:
        for (String s : "HANGING CRAWLING GROUND".split(" ")) {
            Shrubbery shrub = Enum.valueOf(Shrubbery.class, s);
            System.out.println(shrub);
        }
    }
}

運(yùn)行結(jié)果:

ordinal() 方法返回一個(gè)從0開始的int值,代表每個(gè)枚舉實(shí)例的聲明順序。你可以放心地使用 == 來比較枚舉實(shí)例( equals() 和 hashCode() 方法會(huì)由編譯器自動(dòng)為你生成)。Enum 類實(shí)現(xiàn)了 Comparable 接口(因此可比較), 所以自動(dòng)包含了 compareTo() 方法,另外它還實(shí)現(xiàn)了 Serializable 接口(因此可序列化)。

如果調(diào)用枚舉實(shí)例的 getDeclaringClass()方法,則會(huì)得到該枚舉實(shí)例所屬的外部包裝類。

name() 方法返回枚舉實(shí)例被聲明的名稱,使用 toString() 同樣也可以返回該名稱。 value0f() 方法是 Enum 類中的靜態(tài)方法,它根據(jù)傳入的 String, 返回名稱與該 String 匹配的枚舉實(shí)例。如果匹配的實(shí)例不存在,則拋出異常。

靜態(tài)導(dǎo)入枚舉類型

下面是基礎(chǔ)卷第 6 章中 Burrito.java 類的一個(gè)變體:

SpicinessEnum.java

public enum SpicinessEnum {
    NOT, MILD, MEDIUM, HOT, FLAMING
}

Burrito2.java

public class Burrito2 {
    SpicinessEnum degree;

    public Burrito2(SpicinessEnum degree) {
        this.degree = degree;
    }

    @Override
    public String toString() {
        return "Burrito is " + degree;
    }

    public static void main(String[] args) {
        System.out.println(new Burrito2(NOT));
        System.out.println(new Burrito2(MEDIUM));
        System.out.println(new Burrito2(HOT));
    }
}

運(yùn)行結(jié)果:

Burrito is NOT
Burrito is MEDIUM
Burrito is HOT

static import 將所有的枚舉實(shí)例標(biāo)識(shí)符都引入了本地命名空間,因此它們不需要顯式地使用枚舉類型來限定。相較于顯式地用枚舉類型來限定枚舉實(shí)例,哪種方式更好呢?這很大程度上要視代碼的復(fù)雜程度而定。編譯器肯定會(huì)保障類型的正確性,所以你唯一要關(guān)心的就是代碼的可讀性如何。一般來說不會(huì)有大問題,但還是要根據(jù)具體情況評(píng)估。

注意,如果枚舉定義在同一個(gè)文件中,或者定義在默認(rèn)包中,則無法使用該方式(顯然在Sun公司的內(nèi)部,對(duì)于是否允許這種情況有過一些爭(zhēng)論)。

到此這篇關(guān)于Java中enum枚舉類型的基本特性詳解的文章就介紹到這了,更多相關(guān)enum枚舉類型的基本特性內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java方法簽名為何不包含返回值類型

    Java方法簽名為何不包含返回值類型

    這篇文章主要介紹了Java方法簽名為何不包含返回值類型,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06
  • 項(xiàng)目總結(jié)之HttpURLConnection的disconnect的問題

    項(xiàng)目總結(jié)之HttpURLConnection的disconnect的問題

    這篇文章主要介紹了項(xiàng)目總結(jié)之HttpURLConnection的disconnect的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • java對(duì)象類型轉(zhuǎn)換和多態(tài)性(實(shí)例講解)

    java對(duì)象類型轉(zhuǎn)換和多態(tài)性(實(shí)例講解)

    下面小編就為大家?guī)硪黄猨ava對(duì)象類型轉(zhuǎn)換和多態(tài)性(實(shí)例講解)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-10-10
  • Spring注解驅(qū)動(dòng)之ApplicationListener用法解讀

    Spring注解驅(qū)動(dòng)之ApplicationListener用法解讀

    這篇文章主要介紹了Spring注解驅(qū)動(dòng)之ApplicationListener用法解讀,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • java面向?qū)ο笤O(shè)計(jì)原則之里氏替換原則示例詳解

    java面向?qū)ο笤O(shè)計(jì)原則之里氏替換原則示例詳解

    這篇文章主要為大家介紹了java面向?qū)ο笤O(shè)計(jì)原則之里氏替換原則示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪
    2021-10-10
  • Java中的六種經(jīng)典比較排序算法

    Java中的六種經(jīng)典比較排序算法

    排序算法是程序開發(fā)和計(jì)算機(jī)科學(xué)中常見的算法之一,排序算法是算法分析的重要內(nèi)容之一,因?yàn)榕判蛩惴ǖ男视绊懼绦虻男阅芎头€(wěn)定性,本文的目的是介紹常見的排序算法,并且通過代碼示例演示它們的實(shí)現(xiàn)過程,需要的朋友可以參考下
    2023-06-06
  • Java使用kafka發(fā)送和生產(chǎn)消息的示例

    Java使用kafka發(fā)送和生產(chǎn)消息的示例

    本篇文章主要介紹了Java使用kafka發(fā)送和生產(chǎn)消息的示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-04-04
  • java使用FuncGPT慧函數(shù)對(duì)Mybatis進(jìn)行一對(duì)一查詢映射處理

    java使用FuncGPT慧函數(shù)對(duì)Mybatis進(jìn)行一對(duì)一查詢映射處理

    這篇文章主要介紹了java使用FuncGPT慧函數(shù)對(duì)Mybatis進(jìn)行一對(duì)一查詢映射處理,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • springboot Junit 執(zhí)行順序詳解

    springboot Junit 執(zhí)行順序詳解

    這篇文章主要介紹了springboot Junit 執(zhí)行順序,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • 詳解Java多線程與并發(fā)

    詳解Java多線程與并發(fā)

    多線程是一個(gè)進(jìn)程在執(zhí)行過程中產(chǎn)生多個(gè)更小的程序單元,這些更小的單元稱為線程,這些線程可以同時(shí)存在,同時(shí)運(yùn)行,一個(gè)進(jìn)程可能包含多個(gè)同時(shí)執(zhí)行的線程。多線程是實(shí)現(xiàn)并發(fā)機(jī)制的一種有效手段。進(jìn)程和線程一樣,都是實(shí)現(xiàn)并發(fā)的一個(gè)基本單位。
    2021-06-06

最新評(píng)論

金堂县| 怀仁县| 库尔勒市| 嵊州市| 新龙县| 襄汾县| 余庆县| 时尚| 北川| 开化县| 龙里县| 禄丰县| 曲周县| 古蔺县| 东港市| 漠河县| 金秀| 玉屏| 益阳市| 交城县| 留坝县| 城市| 增城市| 郁南县| 七台河市| 麦盖提县| 淮南市| 柳林县| 余干县| 正蓝旗| 文山县| 南投市| 莱芜市| 桐柏县| 江永县| 塔河县| 婺源县| 方城县| 延津县| 肇州县| 寻乌县|