筆記:
import java.lang.*; /**一:枚舉類 : enum Season implements info { s1(),s2(),s3(),s4() }; //s1--s4 放在Season類的最上面! * 1.1.values() 返回一個包含整體的數組! * 2.valueof(String name),返回對應name的類, 必須是枚舉類對象的名字,否則報錯! * 3.實現接口,重寫抽象方法 ,不同的枚舉類可以有不同的方法 */
枚舉類代碼:
interface info{ void show(); } enum Season implements info{ Spring ("spring","春暖花開"){ @Override public void show() { //super.show(); System.out.println("春天在哪里!"); } }, Summer("spring","夏日炎炎"){ public void show(){ System.out.println("夏荷才露尖尖角!"); } }, Autumn("spring","秋高氣爽"){ @Override public void show() { // super.show(); System.out.println("秋天像個傻子"); } }, Winter("spring","白雪皚皚"){ @Override public void show() { super.show(); System.out.println("冬天來了,年來了!"); } }; //1.提供類的屬性,聲明為private finall private final String seasonName; private final String seasonDesc; //2.聲明為final屬性,在構造器中初始化 Season(String seasonName, String seasonDesc) { this.seasonName = seasonName; this.seasonDesc = seasonDesc; } //3.創建枚舉類 public String getSeasonName() { return seasonName; } public String getSeasonDesc() { return seasonDesc; } //4.創建枚舉類的對象為:public static final ,全局的常量 @Override public String toString() { return "Season{" + "seasonName='" + seasonName + '\'' + ", seasonDesc='" + seasonDesc + '\'' + '}'; } @Override public void show() { System.out.println("這是一個季節!"); } } public class Test_enum { public static void main(String[] args) { //1.values() Season[] seasons= Season.values(); for(int i=0;i<seasons.length;i++) System.out.println(seasons[i]); //2.valueof(String name),必須是枚舉類對象的名字,否則報錯! String str="Winter"; Season s1=Season.valueOf(str); System.out.println("\n"+s1); //2.1枚舉Thread 的幾個方法 System.out.println("\n"+"Thread枚舉類的所有方法: "); Thread.State[] states = Thread.State.values(); for(int i=0;i<states.length;i++) System.out.print(states[i]+"\t"); System.out.println(); //3.實現接口,重寫抽象方法 } }
輸出:
Season{seasonName='spring', seasonDesc='春暖花開'} Season{seasonName='spring', seasonDesc='夏日炎炎'} Season{seasonName='spring', seasonDesc='秋高氣爽'} Season{seasonName='spring', seasonDesc='白雪皚皚'} Season{seasonName='spring', seasonDesc='白雪皚皚'} Thread枚舉類的所有方法: NEW RUNNABLE BLOCKED WAITING TIMED_WAITING TERMINATED
手動創建等價的枚舉類:
// 手動創建'枚舉類', class Season{ //1.提供類的屬性,聲明為private finall private final String seasonName; private final String seasonDesc; //2.聲明為final屬性,在構造器中初始化 public Season(String seasonName, String seasonDesc) { this.seasonName = seasonName; this.seasonDesc = seasonDesc; } //3.創建枚舉類 public String getSeasonName() { return seasonName; } public String getSeasonDesc() { return seasonDesc; } //4.創建枚舉類的對象為:public static final ,全局的常量 public static final Season Spring = new Season("spring","春暖花開"); public static final Season Summer = new Season("spring","夏日炎炎"); public static final Season Autumn = new Season("spring","秋高氣爽"); public static final Season winter = new Season("spring","白雪皚皚"); @Override public String toString() { return "Season{" + "seasonName='" + seasonName + '\'' + ", seasonDesc='" + seasonDesc + '\'' + '}'; } }