枚舉類入門java
枚舉類是一種特殊的類,它同樣能夠有本身的方法和屬性,能夠實現一個或者多個接口,也能夠定義本身的構造器。ide
枚舉類與普通類的區別:函數
使用enum定義的枚舉類默認繼承了java.lang.Enum類,而不是繼承Object類;this
枚舉類的構造器只能使用private訪問控制符,若是省略了其構造器的訪問控制符,則默認使用用private修飾;spa
枚舉類的全部實例必須在枚舉中顯式列出,不然這個枚舉類將永遠都不能產生實例。code
java.lang.Enum類中提供了以下幾個方法:
對象
int compareTo(E o):該方法用於與指定枚舉對象比較順序,同一個枚舉實例只能與相同類型的枚舉實例進行比較。若是該枚舉對象位於指定枚舉對象以後,則返回正整數;反之,則返回零。繼承
String name():返回此枚舉實例的名稱,這個名稱就是定義枚舉類時列出的全部枚舉值之一。應該優先考慮使用toString()方法,由於toString()方法返回更加用戶友好的名稱。索引
int ordinal():返回枚舉值在枚舉類中的索引值(就是枚舉值在枚舉聲明中的位置,第一枚舉值的索引值爲零)。接口
String toString():返回枚舉常量的名稱。
public static <T extends Enum<T>> T valueOf(Class<T> enumType,String name):用於返回指定枚舉類中指定名稱的枚舉值。名稱必須與在該枚舉類中聲明枚舉時所用的標識符徹底匹配,不容許使用額外的空白字符。
枚舉類的使用
一、枚舉類型的簡單定義方法以下:
public enum Season { SPRING,SUMMER,FALL,WINTER; }
這樣定義只可以表示出春、夏、秋、冬,可是具體的值沒有表示出來。不過枚舉類型提供了構造函數,能夠經過構造函數和覆寫toString方法來實現。改造後的代碼:
public enum Season { SPRING(1),SUMMER(2),FALL(3),WINTER(4); // 定義私有變量 private int value; private Season(int value) { this.value = value; } @Override public String toString() { return String.valueOf(value); } }
二、包含方法的枚舉類
public enum Season { SPRING(1), SUMMER(2), FALL(3), WINTER(4); // 定義私有變量 private int value; private Season(int value) { this.value = value; } @Override public String toString() { return String.valueOf(value); } public Season next() { Season season = null; switch (this) { // 表明枚舉的一個值 case SPRING: season = SUMMER; break; case SUMMER: season = FALL; break; case FALL: season = WINTER; break; case WINTER: season = SPRING; break; } return season; } }
三、包含抽象方法的枚舉類
public enum Season { SPRING(1) { public Season next() { return SUMMER; } }, SUMMER(2) { public Season next() { return FALL; } }, FALL(3) { public Season next() { return WINTER; } }, WINTER(4) { public Season next() { return SPRING; } }; // 定義私有變量 private int value; private Season(int value) { this.value = value; } @Override public String toString() { return String.valueOf(value); } // 爲枚舉類定義一個抽象方法,這個抽象方法由不一樣枚舉值提供不一樣的事項 public abstract Season next(); }