枚舉類(學(xué)習(xí) Java 編程語言 054)

一個(gè)枚舉類型的典型例子:
?public enum Size{ SMALL, MEDIUM, LARGE, EXTRA_LARGE};
實(shí)際上,這個(gè)聲明定義的類型是一個(gè)類,它剛好有 4 個(gè)實(shí)例,不可能構(gòu)造新的對(duì)象。
因此,在比較兩個(gè)枚舉類型的值時(shí),并不需要調(diào)用 equals,直接使用 “==” 就可以了。

如果需要的話,可以為枚舉類型增加構(gòu)造器、方法和字段。當(dāng)然,構(gòu)造器只是在構(gòu)造枚舉常量的時(shí)候調(diào)用。下面是一個(gè)示例:

enum Size{
    SMALL("S", 0), MEDIUM("M", 1), LARGE("L", 2), EXTRA_LARGE("XL", 3);
    
    private String abbreviation;
    private int index;

    private Size(String abbreviation, int index) {
        this.abbreviation = abbreviation;
        this.index = index;
    }
    
    public String getAbbreviation() {
        return abbreviation;
    }
    public void setAbbreviation(String abbreviation) {
        this.abbreviation = abbreviation;
    }
    public int getIndex() {
        return index;
    }
    public void setIndex(int index) {
        this.index = index;
    }
}

public class Testing {

    public static void main(String[] args) {
        Size size = Enum.valueOf(Size.class, "EXTRA_LARGE");
        System.out.println("Size = " + size.toString());
        System.out.println("abbreviation = " + size.getAbbreviation());
        System.out.println("index = " + size.getIndex());
        System.out.println("ordinal = " + size.ordinal());
        if(size == Size.EXTRA_LARGE) {
            System.out.println("Good job you paid attention to the _.");
        }
    }
}

輸出:

Size = EXTRA_LARGE
abbreviation = XL
index = 4
ordinal = 3
Good job you paid attention to the _.

枚舉的構(gòu)造器總是私有的。可以省略 private 修飾符。如果聲明一個(gè) enum 構(gòu)造器為 public 和 protected,會(huì)出現(xiàn)語法錯(cuò)誤。

所有的枚舉類型都是 Enum 類的子類。它們繼承了這個(gè)類的許多方法。其中最有用的一個(gè)是 toString,這個(gè)方法會(huì)返回枚舉常量名。例如,Size.SMALL.toString() 將返回字符串 “SMALL”。

toString 的逆方法是靜態(tài)方法 valueOf。 例如,語句:
?Size s = Enum.valueOf(Size.class, "SMALL");
將 s 設(shè)置成 Size.SMALL。

每個(gè)枚舉類型都有一個(gè)靜態(tài)的 values 方法,它將返回一個(gè)包含全部枚舉值的數(shù)組。

Size[] arr = Size.values();
System.out.println(Arrays.toString(arr));

打?。?br> ?[SMALL, MEDIUM, LARGE, EXTRA_LARGE]

ordinal 方法返冋 enum 聲明中枚舉常量的位置,位置從 0 開始計(jì)數(shù)。例如:Size.MEDIUM.ordinal() 返回 1。

注釋: Enum 類有一個(gè)類型參數(shù),不過為了簡單起見省略了這個(gè)類型參數(shù)。例如,實(shí)際上枚舉類型 Size 擴(kuò)展了 Enum<Size>。類型參數(shù)會(huì)在 compareTo 方法中使用。

java.long.Enmu<E> 5.0

  • static Enmu valueOf(Calss enumClass, String name)

    返回給定類中指明名字的枚舉常量。

  • String toString()

    返回枚舉常量名。

  • int ordinal()

    返回枚舉常量在 enum 聲明中的位置,位置從 0 開始計(jì)數(shù)。

  • int compareTo(E other)

    如果枚舉常量出現(xiàn)在 other 之前,則返回一個(gè)負(fù)值;如果 this==other,則返回 0;否則,返回正整數(shù)。枚舉常量的出現(xiàn)次序在 enum 聲明中給出。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容