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