java enum枚举类的用法以及高级玩法
enum(枚举)类介绍
**java枚举类是一组预定义常量的集合,使用enum关键字声明这个类,常量名称官方建议大写 **
1.enum类基本用法
举一个常见的例子,例如星期就可以描述为一个枚举类,如下
public class EnumTest {
Day day;
public EnumTest(Day day) {
this.day = day;
}
public void tellItLikeItIs() {
switch (day) {
case MONDAY:
System.out.println("周一各种不在状态");
break;
case FRIDAY:
System.out.println("周五感觉还不错");
break;
case SATURDAY: case SUNDAY:
System.out.println("周末给人的感觉是最棒的");
break;
default:
System.out.println("周内感觉就那样吧。。。");
break;
}
}
public static void main(String[] args) {
EnumTest firstDay = new EnumTest(Day.MONDAY);
firstDay.tellItLikeItIs();
EnumTest thirdDay = new EnumTest(Day.WEDNESDAY);
thirdDay.tellItLikeItIs();
EnumTest fifthDay = new EnumTest(Day.FRIDAY);
fifthDay.tellItLikeItIs();
EnumTest sixthDay = new EnumTest(Day.SATURDAY);
sixthDay.tellItLikeItIs();
EnumTest seventhDay = new EnumTest(Day.SUNDAY);
seventhDay.tellItLikeItIs();
}
}
运行结果
EnumTest类运行结果.png2.enum类和static常量区别
看了上面的例子,有些小伙伴就嗤之以鼻孔了,这没什么嘛,java静态常量也一样可以办到
public enum Day {
MONDAY(1, "星期一", "星期一各种不在状态"),
TUESDAY(2, "星期二", "星期二依旧犯困"),
WEDNESDAY(3, "星期三", "星期三感觉半周终于过去了"),
THURSDAY(4, "星期四", "星期四期待这星期五"),
FRIDAY(5, "星期五", "星期五感觉还不错"),
SATURDAY(6, "星期六", "星期六感觉非常好"),
SUNDAY(7, "星期日", "星期日感觉周末还没过够。。。");
Day(int index, String name, String value) {
this.index = index;
this.name = name;
this.value = value;
}
private int index;
private String name;
private String value;
public int getIndex() {
return index;
}
public void setIndex(int index) {
this.index = index;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}
这次测试类就有些些变化了,更灵活了
public enum Day {
MONDAY(1, "星期一", "各种不在状态"){
@Override
public Day getNext() {
return TUESDAY;
}
},
TUESDAY(2, "星期二", "依旧犯困"){
@Override
public Day getNext() {
return WEDNESDAY;
}
},
WEDNESDAY(3, "星期三", "感觉半周终于过去了"){
@Override
public Day getNext() {
return THURSDAY;
}
},
THURSDAY(4, "星期四", "期待这星期五"){
@Override
public Day getNext() {
return FRIDAY;
}
},
FRIDAY(5, "星期五", "感觉还不错"){
@Override
public Day getNext() {
return SATURDAY;
}
},
SATURDAY(6, "星期六", "感觉非常好"){
@Override
public Day getNext() {
return SUNDAY;
}
},
SUNDAY(7, "星期日", "感觉周末还没过够。。。"){
@Override
public Day getNext() {
return MONDAY;
}
};
Day(int index, String name, String value) {
this.index = index;
this.name = name;
this.value = value;
}
private int index;
private String name;
private String value;
public abstract Day getNext();
public int getIndex() {
return index;
}
public void setIndex(int index) {
this.index = index;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getValue() {
return value;
}
public void setValue(String value) {