寧波網(wǎng)站建設(shè)制作哪家好百度公司地址
目錄
一、枚舉類
二、創(chuàng)建枚舉類
2.1、JDK5.0之前創(chuàng)建?
?2.2、JDK5.0使用enum創(chuàng)建
?三、枚舉類常用方法
?四、枚舉類實(shí)現(xiàn)接口
一、枚舉類
枚舉類型本質(zhì)上也是一種類,只不過(guò)是這個(gè)類的對(duì)象是有限的、固定的幾個(gè),不能讓用戶隨意創(chuàng)建。
二、創(chuàng)建枚舉類
2.1、JDK5.0之前創(chuàng)建?
public class SeasonTest {public static void main(String[] args) {System.out.println(Season.SPRING.getSeasonName());}
}
//JDK5.0之前創(chuàng)建方式
class Season{//定義屬性private final String seasonName;private final String seasonDesc;//構(gòu)造器私有化private Season(String seasonName, String seasonDesc) {this.seasonName = seasonName;this.seasonDesc = seasonDesc;}//提高get方法public String getSeasonName() {return seasonName;}public String getSeasonDesc() {return seasonDesc;}//創(chuàng)建當(dāng)前類的實(shí)例public static final Season SPRING = new Season("春天","春暖花開(kāi)");public static final Season SUMMER = new Season("夏天","夏日炎炎");public static final Season AUTUMN = new Season("秋天","秋高氣爽");public static final Season WINTER = new Season("冬天","白雪皚皚");@Overridepublic String toString() {return "Season{" +"seasonName='" + seasonName + '\'' +", seasonDesc='" + seasonDesc + '\'' +'}';}
}
?2.2、JDK5.0使用enum創(chuàng)建
public class SeasonTest1 {public static void main(String[] args) {System.out.println(Season1.SPRING.getSeasonName());}
}
//JDK5.0創(chuàng)建方式
enum Season1{//創(chuàng)建當(dāng)前類的實(shí)例SPRING("春天","春暖花開(kāi)"),SUMMER("夏天","夏日炎炎"),AUTUMN("秋天","秋高氣爽"),WINTER("冬天","白雪皚皚");//定義屬性private final String seasonName;private final String seasonDesc;//構(gòu)造器私有化private Season1(String seasonName, String seasonDesc) {this.seasonName = seasonName;this.seasonDesc = seasonDesc;}//提高get方法public String getSeasonName() {return seasonName;}public String getSeasonDesc() {return seasonDesc;}
}
?三、枚舉類常用方法
String toString(): 默認(rèn)返回的是常量名(對(duì)象名),可以繼續(xù)手動(dòng)重寫該方法!
???
static 枚舉類型[] values():返回枚舉類型的對(duì)象數(shù)組。該方法可以很方便地遍歷所有的枚舉值,是一個(gè)靜態(tài)方法
???
static 枚舉類型 valueOf(String name):可以把一個(gè)字符串轉(zhuǎn)為對(duì)應(yīng)的枚舉類對(duì)象。要求字符串必須是枚舉類對(duì)象的“名字”。如不是,會(huì)有運(yùn)行時(shí)異常:IllegalArgumentException。
???
String name():得到當(dāng)前枚舉常量的名稱。建議優(yōu)先使用toString()。
???
int ordinal():返回當(dāng)前枚舉常量的次序號(hào),默認(rèn)從0開(kāi)始
//toString()System.out.println(Season1.SPRING);//name()System.out.println(Season1.SPRING.name());//values()Season1[] values = Season1.values();for (Season1 season1:values) {System.out.println(season1);}//valueOf():可以把一個(gè)字符串轉(zhuǎn)為對(duì)應(yīng)的枚舉類對(duì)象。要求字符串必須是枚舉類對(duì)象的“名字”。// 如不是,會(huì)有運(yùn)行時(shí)異常:IllegalArgumentException。System.out.println(Season1.valueOf("SPRING"));//ordinal()System.out.println(Season1.SUMMER.ordinal());
?四、枚舉類實(shí)現(xiàn)接口
4.1、枚舉的對(duì)象調(diào)用執(zhí)行同一個(gè)方法
public class SeasonTest2 {public static void main(String[] args) {Season2.SPRING.method();}
}
interface Test01{public void method();
}
//JDK5.0創(chuàng)建方式
enum Season2 implements Test01{//創(chuàng)建當(dāng)前類的實(shí)例SPRING("春天","春暖花開(kāi)"),SUMMER("夏天","夏日炎炎"),AUTUMN("秋天","秋高氣爽"),WINTER("冬天","白雪皚皚");@Overridepublic void method() {System.out.println("實(shí)現(xiàn)接口成功");}//定義屬性private final String seasonName;private final String seasonDesc;//構(gòu)造器私有化private Season2(String seasonName, String seasonDesc) {this.seasonName = seasonName;this.seasonDesc = seasonDesc;}
}
4.2、枚舉類的每個(gè)對(duì)象重寫接口中的方法,執(zhí)行每個(gè)對(duì)象重寫的方法
public class SeasonTest2 {public static void main(String[] args) {Season2[] values = Season2.values();for (int i = 0; i < values.length; i++) {values[i].method();}}
}
interface Test01{public void method();
}
//JDK5.0創(chuàng)建方式
enum Season2 implements Test01{//創(chuàng)建當(dāng)前類的實(shí)例SPRING("春天","春暖花開(kāi)"){@Overridepublic void method() {System.out.println("春天重寫接口方法");}},SUMMER("夏天","夏日炎炎"){@Overridepublic void method() {System.out.println("夏天重寫接口方法");}},AUTUMN("秋天","秋高氣爽"){@Overridepublic void method() {System.out.println("秋天重寫接口方法");}},WINTER("冬天","白雪皚皚"){@Overridepublic void method() {System.out.println("冬天重寫接口方法");}};
// @Override
// public void method() {
// System.out.println("實(shí)現(xiàn)接口成功");
// }//定義屬性private final String seasonName;private final String seasonDesc;//構(gòu)造器私有化private Season2(String seasonName, String seasonDesc) {this.seasonName = seasonName;this.seasonDesc = seasonDesc;}
}