一、方式一(無參數)
public enum Week {
MON,TUE,WED;
}
相當於
public class Week {
public static final Week MON = new Week();
public static final Week TUE = new Week();
public static final Week WED = new Week();
private Week(){} //私有構造,不讓其他類創建本類對象
}
public static void demo1() {
Week mon = Week.MON;
System.out.println(mon);
}
二、方式二(有參數)
public enum Week2 {
MON("星期一"),TUE("星期二"),WED("星期三");
private String name;
private Week2(String name) {
this.name = name;
}
public String getName() {
return name;
}
public String toString() {
return name;
}
}
相當於
public class Week2 {
public static final Week2 MON = new Week2("星期一");
public static final Week2 TUE = new Week2("星期二");
public static final Week2 WED = new Week2("星期三");
private String name;
private Week2(String name){
this.name = name;
} //私有構造,不讓其他類創建本類對象
public String getName() {
return name;
}
}
public static void demo2() {
Week2 mon = Week2.MON;
System.out.println(mon.getName());
}
三、方式三(有抽象方法)
public enum Week3 {
MON("星期一"){
public void show() {
System.out.println("星期一");
}
},TUE("星期二"){
public void show() {
System.out.println("星期二");
}
},WED("星期三"){
public void show() {
System.out.println("星期三");
}
};
private String name;
private Week3(String name) {
this.name = name;
}
public String getName() {
return name;
}
public abstract void show();
}
相當於
public abstract class Week3 {
public static final Week3 MON = new Week3("星期一") {
public void show() {
System.out.println("星期一");
}
};
public static final Week3 TUE = new Week3("星期二"){
public void show() {
System.out.println("星期二");
}
};
public static final Week3 WED = new Week3("星期三"){
public void show() {
System.out.println("星期三");
}
};
private String name;
private Week3(String name){
this.name = name;
} //私有構造,不讓其他類創建本類對象
public String getName() {
return name;
}
public abstract void show();
}
public static void demo3() {
Week3 mon = Week3.MON;
mon.show();
}
public static void main(String[] args) {
Week3 mon = Week3.TUE;
switch (mon) {
case MON:
System.out.println("星期一");
break;
case TUE:
System.out.println("星期二");
break;
}
}
四、使用方法
int
ordinal()
返回枚舉常量的序數(它在枚舉聲明中的位置,其中初始常量序數爲零)。
int
compareTo(E o)
比較此枚舉與指定對象的順序。
String
name()
返回此枚舉常量的名稱,在其枚舉聲明中對其進行聲明。
String
toString()
返回枚舉常量的名稱,它包含在聲明中。
static
<T extends Enum<T>>T
valueOf(Class<T> enumType, String name)
返回帶指定名稱的指定枚舉類型的枚舉常量。
values() 此方法雖然在JDK文檔中查找不到,但每個枚舉類都具有該方法,它遍歷枚舉類的所有枚舉值非常方便
public static void demo1() {
Week2 mon = Week2.MON;
Week2 tue = Week2.TUE;
Week2 wed = Week2.WED;
System.out.println(mon.ordinal()); //枚舉項都是有編號的
System.out.println(tue.ordinal());
System.out.println(wed.ordinal());
System.out.println(mon.compareTo(tue)); //比較的是編號
System.out.println(mon.compareTo(wed));
System.out.println(mon.name()); //獲取實例名稱
System.out.println(mon.toString()); //調用重寫之後的toString方法
Week2[] arr = Week2.values();
for (Week2 week2 : arr) {
System.out.println(week2);
}
}