天天看點

Java下枚舉變量與其他資料類型的轉換

Java下枚舉變量與其他資料類型的轉換

當使用enum定義一個枚舉類型時,實際上所定義的類型自動繼承了java.lang.Enum類。而每個被枚舉的成員實質就是一個枚舉類型的執行個體,他們預設都是public static final的。可以直接通過枚舉類型名直接使用它們,枚舉類型名,可以轉為一個數值,或作字元比對的方法來識别類型,是以我們在寫枚舉類型的時候,可以簡單了解為一個個的串。

如下:

public enum emOrder {

        orOne, orTwo, orClass   

    }

emOrder ot = emOrder.orTwo;

錯誤的做法:String str = "我是第"  + ot + "個進入皇室的成員"

得到的結果将是:“我是第orTwo個進入皇室的成員”

正确的做法:String str = "我是第"  + String.valueOf(nSoftType.ordinal()+1) + "個進入皇室的成員"

得到的結果将是:“我是第2個進入皇室的成員”

------------------

java.lang.Enum類

public abstract class Enum<E extends Enum<E>>extends Objectimplements Comparable<E>, Serializable這是所有 Java 語言枚舉類型的公共基本類。

構造方法摘要

protected Enum(String name,int ordinal)

    單獨的構造方法。程式員無法調用此構造方法。該構造方法用于由響應枚舉類型聲明的編譯器發出的代碼。

    參數:

    name - - 此枚舉常量的名稱,它是用來聲明該常量的辨別符。

    ordinal - - 枚舉常量的序數(它在枚舉聲明中的位置,其中初始常量序數為零)。

方法摘要

protected Object clone()

          抛出 CloneNotSupportedException。

int compareTo(E o)

          比較此枚舉與指定對象的順序。在該對象小于、等于或大于指定對象時,分别傳回負整數、零或正整數。 枚舉常量隻能與相同枚舉類型的其他枚舉常量進行比較。該方法實作的自然順序就是聲明常量的順序。

boolean equals(Object other)

          當指定對象等于此枚舉常量時,傳回 true。

Class<E> getDeclaringClass()

          傳回與此枚舉常量的枚舉類型相對應的 Class 對象。當且僅當 e1.getDeclaringClass() == e2.getDeclaringClass() 時,兩個枚舉常量 e1 和 e2 的枚舉類型才相同。(由該方法傳回的值不同于由 Object.getClass() 方法傳回的值,Object.getClass() 方法用于帶有特定常量的類主體的枚舉常量。)

int hashCode()

          傳回枚舉常量的哈希碼。

String name()

          傳回此枚舉常量的名稱,在其枚舉聲明中對其進行聲明。 與此方法相比,大多數程式員應該優先考慮使用 toString() 方法,因為 toString 方法傳回更加使用者友好的名稱。該方法主要設計用于特殊情形,其正确性取決于獲得正确的名稱,其名稱不會随版本的改變而改變

int ordinal()

          傳回枚舉常量的序數(它在枚舉聲明中的位置,其中初始常量序數為零)。 大多數程式員不會使用此方法。它被設計用于複雜的基于枚舉的資料結構,比如 EnumSet 和 EnumMap。

String toString()

          傳回枚舉常量的名稱,它包含在聲明中。

public static <T extends Enum<T>> T valueOf(Class<T> enumType, String name)

          傳回帶指定名稱的指定枚舉類型的枚舉常量。名稱必須與在此類型中聲明枚舉常量所用的辨別符完全比對。(不允許使用額外的空白字元。)

   參數:

   enumType - 要從中傳回常量的枚舉類型的 Class 對象

   name - 要傳回的常量名稱

注意:ordinal() 方法得到枚舉順序的索引,預設從0開始。