定义枚举:
public enum WeekEnum {
Monday, //星期一
Tuesday, //星期二
wednesday, //星期三
Thursday, //星期四
Friday, //星期五
Saturday, //星期六
sunday; //星期日
}
枚举是一个类,它可以有自己的成员变量和方法,但是它是一个特殊的类,它不能通过new来创建对象。
它只能通过枚举类的valueof方法创建。
// 访问某一枚举(Monday)
System.out.println(WeekEnum.Monday);
// 在枚举中的索引(3)
System.out.println(WeekEnum.Thursday.ordinal());
// 遍历枚举
for (WeekEnum weekEnum : WeekEnum.values()){
System.out.println(weekEnum.name());
}
// 枚举类对象不能通过new创建,而是通过valueof创建
WeekEnum weekEnum = WeekEnum.valueOf("Thursday");
如果希望能打印出相应的中文说明,怎么办呢,有两种方法。
方法一,直接在类中添加如下方法:
public String getDescription(){
String sDes = "";
switch (this){
case Monday:
sDes ="星期一";
break;
case Tuesday:
sDes ="星期二";
break;
case wednesday:
sDes ="星期三";
break;
case Thursday:
sDes ="星期四";
break;
case Friday:
sDes ="星期五";
break;
case Saturday:
sDes ="星期六";
break;
case sunday:
sDes ="星期日";
break;
default :
}
return sDes;
}
调用如下:
WeekEnum weekEnum = WeekEnum.valueOf("Thursday");
System.out.println(weekEnum.getDescription());
输出:星期四
方法二:使用私有构造函数
public enum WeekEnum2 {
Monday("星期一"), //星期一
Tuesday("星期二"), //星期二
wednesday("星期三"), //星期三
Thursday("星期四"), //星期四
Friday("星期五"), //星期五
Saturday("星期六"), //星期六
sunday("星期日"); //星期日
private WeekEnum2(String description){
this._sDescription = description;
}
private String _sDescription;
public String getDescription(){
return _sDescription;
}
}
枚举类的构造函数必须是私有的,同时上面的七个值必须和构造函数一样传参,相当于实例化。使用效果如下:
WeekEnum2 weekEnum2 = WeekEnum2.valueOf("Thursday");
System.out.println(weekEnum2.getDescription());
输出:星期四
注:如果需要添加更多的信息,则可以添加多个成员变量,构造函数中传多个值。