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 ();
}