java枚舉類

來源:互聯網
上載者:User

標籤:

enum關鍵字用於定義枚舉類,若枚舉只有一個成員, 則可以作為一種單例模式的實現方式。

 枚舉類對象的屬性不應允許被改動, 所以應該使用 private final 修飾。枚舉類的使用 private final 修飾的屬性應該在構造器中為其賦值。若枚舉類顯式的定義了帶參數的構造器, 則在列出枚舉值時也必須對應的傳入參數。 必須在枚舉類的第一行聲明枚舉類對象。枚舉類和普通類的區別:       1.使用 enum 定義的枚舉類預設繼承了 java.lang.Enum 類       2.枚舉類的構造器只能使用 private 存取控制符       3.枚舉類的所有執行個體必須在枚舉類中顯式列出(以,分隔 以; 結尾). 列出的執行個體系統會自動添加 public static final 修飾 JDK1.5之前需要自訂枚舉類: 
/*枚舉類的自訂方式*/public class TestSeason {    public static void main(String[] args){         Season spring=Season.SPRING;         System.out.println(spring);         System.out.println(spring.getSeasonName());    }}//枚舉類class Season{    //1.提供類的屬性,聲明為private final    private final String seasonName;    private final String seasonDesc;    //2.聲明為final的屬性,在構造器中初始化    private Season(String seasonName,String seasonDesc){        this.seasonName=seasonName;        this.seasonDesc=seasonDesc;    }     public static final Season SPRING=new Season("spring","春暖花開");    public static final Season SUMMER=new Season("summer","夏日炎炎");    public static final Season AUTOMN=new Season("automn","秋高氣爽");    public static final Season WINTER=new Season("winter","白雪皚皚");        //通過公用的方法來調用屬性    public String getSeasonName() {        return seasonName;    }    public String getSeasonDesc() {        return seasonDesc;    }    @Override    public String toString() {        return "Season [seasonName=" + seasonName + ", seasonDesc="                + seasonDesc + "]";    }}  
JDK 1.5 新增的 enum 關鍵字用於定義枚舉類:     枚舉類的主要方法:         1.values()方法:返回枚舉類型的對象數組。該方法可以很方便地遍曆所有的枚舉值。         2.valueOf(String str):可以把一個字串轉為對應的枚舉類對象。要求字串必須是枚舉類對象的“名字”。如不是,會有運行時異常。     若需要每個枚舉值在調用實現的介面方法呈現出不同的行為方式, 則可以讓每個枚舉值分別來實現該方法
/* * 一.枚舉類 * 1.如何自訂枚舉類 * 2.如何使用enum關鍵字定義枚舉類 *      常用的方法;values(),valueOf(String str) *      如何使枚舉類實現介面:可以讓不同的枚舉類的對象調用被重寫的抽象方法,執行的效果不同(相當於每個對象重寫抽象方法) * */public class TestSeason1{    public static void main(String[] args){        SeasonEnum spring=SeasonEnum.SPRING;        System.out.println(spring);        System.out.println(spring.getSeasonName());                //1.values方法可以返回枚舉類型的對象數組,可以方便遍曆所有的枚舉值        SeasonEnum[] seasons=SeasonEnum.values();        for(int i=0;i<seasons.length;i++){            System.out.println(seasons[i]);        }        //2.valueOf方法可以把一個字串轉為對應的枚舉類對象,要求字串必須是枚舉類對象的“名字”        String str="WINTER";        SeasonEnum sea=SeasonEnum.valueOf(str);        System.out.println(sea);        //不同的枚舉類對象調用重寫的show方法得到不同的效果        spring.show();        sea.show();            }}//介面interface Info{    public void show();}//實現介面的枚舉類enum SeasonEnum implements Info{     //必須在枚舉類的第一行聲明枚舉類對象    SPRING("spring","春暖花開"){        public void show(){            System.out.println("春天在哪裡");        }    },    SUMMER("summer","夏日炎炎"){        public void show(){            System.out.println("生如夏花");        }    },    AUTOMN("autumn","秋高氣爽"){        public void show(){            System.out.println("金色的秋天");        }    },    WINTER("winter","白雪皚皚"){        public void show(){            System.out.println("冬天裡的一把火");        }    };        private final String seasonName;    private final String seasonDesc;        private SeasonEnum(String seasonName, String seasonDesc) {        this.seasonName = seasonName;        this.seasonDesc = seasonDesc;    }        public String getSeasonName() {        return seasonName;    }        public String getSeasonDesc() {        return seasonDesc;    }}

 

java枚舉類

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.