java枚举
概述
枚举是一个被命名的常数的集合,用于声明一组带标识的常数。
在JDK1.5之前没有枚举类型,那时候一般用接口常量来替代。而使用Java枚举类型enum可以更贴近地标识这种常量。
使用场景:
类的对象只有有限个,确定的。
例如:
- 星期:Monday(星期一)…Sunday(星期天)
- 性别:Man(男),Woman(女)
- 季节:Spring(春),…Winter(冬)
- 支付方式:Cash(现金),WeChatPay(微信),AliPay(支付宝),BankCar(银行卡)
- 订单状态:Nonpayment(未付款),Paid(已付款)
- 等等。。。。。
声明枚举
声明枚举时必须使用enum关键字,然后定义枚举的名称、可访问性、基础类型和成员等。
语法:
enum-modifiers enum enumname:enum-base {
enum-body,
enum-body,
...
enum-body;
}
enum-modifiers 表示枚举的修饰符主要包括 public、默认;
enumname 表示声明的枚举名称;
enum-base 表示基础类型;
enum-body 表示枚举的成员,它是枚举类型的命名常数。
任意两个枚举成员不能具有相同的名称,且它的常数只必须在该枚举的基础类型的范围之内,多个枚举成员之间使用逗号分隔。
例子
public enum Weekday {
SUN(0,"星期天"),
MON(1,"星期一"),
TUS(2,"星期二"),
WED(3,"星期三"),
THU(4,"星期四"),
FRI(5,"星期五"),
SAT(6,"星期六");
private int weekNum;
private String weekName;
private Weekday(int weekNum,String weekName){
this.setWeekNum(weekNum);
this.setWeekName(weekName);
}
public String getWeekName() {
return weekName;
}
public void setWeekName(String weekName) {
this.weekName = weekName;
}
public int getWeekNum() {
return weekNum;
}
public void setWeekNum(int weekNum) {
this.weekNum = weekNum;
}
}
测试
public static void main(String[] args) {
Weekday weekday = Weekday.MON;
//System.out.println(weekday);
//System.out.println(weekday.toString());
Weekday[] values = Weekday.values();
for(Weekday w : values){
System.out.println(w);
}
}