简述
Java中的枚举类其实可以理解为有固定数量实例的普通类.这两者的差别主要是:在枚举类中,我们要先确定好实例的名称和种类.如下所示:
// 定义一个星期的枚举类
public enum WeekEnum {
// 在第一行显式地列出7个枚举实例(枚举值),系统会自动添加 public static final 修饰
SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY;
}
如果要将复合变量作为枚举实例,则要构建对应的私有化构造器和私有变量.如下所示:
public enum WeekEnum {
// 因为已经定义了带参数的构造器,所以在列出枚举值时必须传入对应的参数
SUNDAY("星期日","13点"), MONDAY("星期一","13点"), TUESDAY("星期二","13点"), WEDNESDAY("星期三","13点"),
THURSDAY("星期四","13点"), FRIDAY("星期五","13点"), SATURDAY("星期六","16点");
// 定义一个 private 修饰的实例变量
private String date;
private String time;
// 定义一个带参数的构造器,枚举类的构造器只能使用 private 修饰
private WeekEnum(String date, String time) {
this.date = date;
this.time = time;
}
// 定义 get set 方法
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
}
如果要将Bean作为枚举实例,则如下所示:
enum ClassEnum {
A(A.class),
B(B.class),
C(C.class);
private Class<? extends BaseClass> instance ;
ProcessStrategyEnum(Class<? extends BaseClass> instance) {
this.instance = instance;
}
}
class A extends BaseClass{
}
class B extends BaseClass{
}
class C extends BaseClass{
}
另外,枚举类也提供了valus()
,name()
等方法可以用来得到所有枚举类型和名字.