Java列舉Enum用法詳解
阿新 • • 發佈:2020-12-28
前兩篇博文對列舉處理器進行了詳細的介紹,這裡對列舉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 |
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前後順序倒過來,那麼結果是: enabled和disabled的比較結果是1 |
Enabled.disabled |
獲取到對應的列舉值disabled,其型別是Enabled,從列舉類中直接獲取到此列舉,沒進行任何加工,來一小行程式碼測試一下: System.out.println(Enabled.disabled); Enabled disabled = Enabled.disabled; System.out.println(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
至此,結束。