package com.an.testenum;
/*
* JDK1.5之後:
* 聲明格式:
* 【修飾符】 enum 枚舉類名{
* 常量對象列表(每一個對象之間使用,分割)
* }
*
* 要求:
* 1、常量對象列表必須在首行
* 2、如果常量對象列表後面還有其他的代碼,那麼需要在常量對象列表後面加;
*
* 特點:
* 1、枚舉類型也是類,只不過有點特殊
* (1)聲明關鍵字是enum,替代原來class
* (2)對象已經在枚舉類中創建好了,不能在外面創建了
* (3)枚舉類型中可以聲明一個或重載的多個構造器,但是必須全部私有化
* (4)這個類默認不是繼承Object,而是Object下面的java.lang.Enum類型
*
* java.lang.Enum類型:這是所有 Java 語言枚舉類型的公共基本類。
* (1)toString()返回枚舉的常量名
* (2)name():返回枚舉的常量名
* (3)ordinal():返回枚舉常量的序數(它在枚舉聲明中的位置,其中初始常量序數爲零)。
* API中沒有,是編譯增加的
* 枚舉類型[] values():返回所有的枚舉的常量對象
* 枚舉對象 valueOf("枚舉常量名"):返回的是某個枚舉常量對象
*
* Enum類型沒有無參構造,子類默認調用的是它的有參構造
*
* 首行:
* this(),this(實參列表)
* super(),super(實參列表)
* package 包名;
* 枚舉的常量對象列表
*/
public class TestEnum5 {
public static void main(String[] args) {
Week1 mon = Week1.MONDAY;
System.out.println(mon);//調用的toString方法 MONDAY:
System.out.println(mon.name());//返回常量名 MONDAY
System.out.println(mon.ordinal());//返回枚舉常量的序數 0
Week1 sun = Week1.SUNDAY;
System.out.println(sun);//星期天:放假
System.out.println(sun.name());//SUNDAY
System.out.println(sun.ordinal());//6
Week1[] values = Week1.values();
for (Week1 week1 : values) {
System.out.println(week1);
/* MONDAY:
TUESDAY:
WEDNESDAY:
THURSDAY:
FRIDAY:
SATURDAY:
星期天:放假
*/
}
}
}
enum Week1{
MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY,SUNDAY("星期天","放假");
private String name;
private String desc;
private Week1(){
this.name = name();
this.desc = "";
}
private Week1(String name){
this.name = name;
}
private Week1(String name,String desc){
this.name = name;
this.desc = desc;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return name + ":" + desc;
}
}
枚舉也可以實現接口:
package com.an.testenum;
/*
* 枚舉也可以實現接口
*/
public class TestEnum3 {
public static void main(String[] args) {
Gender m = Gender.MAN;
Gender w = Gender.WOMAN;
m.walk();
w.walk();
//輸出
//男人走路
//女人走路
}
}
interface Walk{
void walk();
}
enum Gender implements Walk{
MAN{
@Override
public void walk() {
// TODO Auto-generated method stub
System.out.println("男人走路");
}
},WOMAN{
@Override
public void walk() {
// TODO Auto-generated method stub
System.out.println("女人走路");
}
};
@Override
public void walk() {
System.out.println("走路");
}
}
枚舉內的一些元素可以看做爲一個構造器。調用時可以想象一下