1. 程式人生 > 實用技巧 >Java列舉Enum用法詳解

Java列舉Enum用法詳解

前兩篇博文對列舉處理器進行了詳細的介紹,這裡對列舉Enum的用法進行一個大致總結,以便於更好的理解程式碼邏輯。

還是以Enabled列舉類為例子進行彙總:

package com.example.simple.type;

public enum Enabled {
    enabled(1), //啟用
    disabled(0);  //禁用
    private final int value;

    private Enabled(int value) {
        this.value = value;
    }

    public int getValue() {
        return value;
    }
}

一、方法

方法 詳解
Enabled.values()

以陣列形式返回列舉型別的所有成員

System.out.println(Enabled.values());

測試了一下上面程式碼實現方式不可行,並不能實現列舉型別成員實現,而要通過迴圈方式實現,如下:

for(Enabled enabled:Enabled.values()){
                System.out.println(enabled);
            }

或者:

for(int i = 0;i<Enabled.values().length ; i++){
                System.out.println(Enabled.values()[i]);
            }

測試結果為:

enabled
disabled

Enabled.valueOf(String string)

根據普通字串抓取到對應的列舉例項,普通字串型別變為列舉型別

System.out.println(Enabled.valueOf("enabled"));

輸出:

enabled

若變為:

System.out.println(Enabled.valueOf("aaa"));

會出現異常:

java.lang.IllegalArgumentException: No enum constant com.example.simple.type.Enabled.aaa

compareTo(Enabled enabled)

比較兩個列舉成員在定義時的順序,通俗來說就是前後順序

compare(Enabled.valueOf("enabled"));

public static void compare(Enabled enabled){
        for(int i = 0;i<Enabled.values().length ; i++){
            System.out.println(enabled+"和"+ Enabled.values()[i]
                    + "的比較結果是" + enabled.compareTo(Enabled.values()[i]));
        }
    }

測試結果為:

enabled和enabled的比較結果是0
enabled和disabled的比較結果是-1

如果列舉類中將enabled和disabled前後順序倒過來,那麼結果是:

enabled和disabled的比較結果是1
enabled和enabled的比較結果是0

Enabled.disabled

獲取到對應的列舉值disabled,其型別是Enabled,從列舉類中直接獲取到此列舉,沒進行任何加工,來一小行程式碼測試一下:

 System.out.println(Enabled.disabled);
 Enabled disabled = Enabled.disabled;
 System.out.println(disabled);

輸出結果為:

disabled
disabled

Enabled.enabled
獲取到對應的列舉值enabled,其型別是Enabled,從列舉類中直接獲取到此列舉,沒進行任何加工。

ps:這裡還有ordinal()函式,作用是獲取一個成員在列舉中的索引位置。

for(int i=0;i<Enabled.values().length;i++)
        {
            System.out.println("索引"+Enabled.values()[i].ordinal()+",值:"+Enabled.values()[i]);
        }

測試結果為:

索引0,值:enabled
索引1,值:disabled

至此,結束。