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開始。