1. 枚举的基本概念
1.1 为什么需要枚举?
在枚举出现之前,我们通常使用常量来表示固定值:
// 旧的方式:使用常量
public class OldStyle {
public static final int MONDAY = 1;
public static final int TUESDAY = 2;
public static final int WEDNESDAY = 3;
// ... 其他天
public void setDay(int day) {
// 可能传入非法值,如 100
}
}
这种方式的问题:
- 类型不安全
- 没有命名空间
- 可读性差
- 无法添加行为
1.2 枚举的基本语法
// 简单的枚举定义
public enum Day {
MONDAY, // 枚举常量
TUESDAY,
WEDNESDAY,
THURSDAY,
FRIDAY,
SATURDAY,
SUNDAY
}
2. 枚举的高级特性
2.1 带属性的枚举
枚举可以拥有字段、构造方法和普通方法:
public enum Planet {
MERCURY(3.303e+23, ),
VENUS(, ),
EARTH(, ),
MARS(, ),
JUPITER(, ),
SATURN(, ),
URANUS(, ),
NEPTUNE(, );
mass;
radius;
Planet( mass, radius) {
.mass = mass;
.radius = radius;
}
{
G * mass / (radius * radius);
}
{
otherMass * surfaceGravity();
}
;
}


