1什么是枚举
先说什么是枚举之前,先了解一下单例模式,单例模式是什么呢,就是一个类只有一个实例对象。意味着你在任何时候要获得一个单例模式的类,所获得的对象都是相同的,那么单例模式如何实现呢?
单例模式的实现思想是这样的,你把一个类的构造方法声明为私有,然后在引用工厂模式,也就是通过类方法的形式把类的实例传递出去。
public class Single{
private Single(){
}
private static Single single;
public static Single getSingle(){
if(single==null){
single=new Single();
}
return single;
}
}
好了这就是单例模式,然而并没有什么卵用。那么什么是枚举呢,枚举就是一个只有有限个实例。例如,一个星期只有7天。
public class Week{
public static Week MON=new Week();
public static Week TUE=new Week();
public static Week WED=new Week();
private Week(){
}
}
枚举类的变形
上面的那个枚举类是最简单的,下面再介绍两种变形。
有参构造函数
public class Week2{
public static Week2 MON=new Week2("星期一");
public static Week2 TUE=new Week2("星期二");
public static Week2 WED=new Week2("星期三");
private String str;
private Week2(String str){
this.str=str;
}
}
抽象方法,匿名内部类
这里public abstract class Week3{
public static Week3 MON=new Week3("星期一"){
public void show(){
System.out.println(str);
}
};
public static Week3 TUE=new Week3("星期二"){
public void show(){
System.out.println(str);
}
};
public static Week3 WED=new Week3("星期三"){
public void show(){
System.out.println(str);
}
};
String str;
private Week3(String str){
this.str=str;
}
public abstract void show();
}
枚举的官方关键字enum
通过enum将一个java类声明为枚举类型
以下为enum对应的枚举的三种实现
public enum EnuWeek {
MON,TUE,WED;
}
public enum EnumWeek2 {
MON("星期一"),TUE("星期二"),WED("星期三");
private String str;
private EnumWeek2(String str){
this.str=str;
}
}
public enum EnumWeek3 {
MON(){
public void show(){
}
},
TUE(){
public void show(){
}
},
WED(){
public void show(){
}
};
public abstract void show();
}