枚举(Enum)类型是 java 5 中新增的一种数据类型,它能够帮助我们更加快捷和安全的实现枚举。
下面是在此之前我们在定义枚举常量时的做法,这样的定义方式虽然也能正常工作,但却存在许多不足,比如不小心把 RED和 GREEN 都置为 2 时,编译器并不会报错,但是却很难进行排查,在这里提及呢主要是为了我们更好的理解枚举。
使用简单类完成枚举操作
public class TestSeason {
public static void main(String[] args) {
Season spring = Season.SPRING;
System.out.println(spring);//默认调用spring.toString()方法
System.out.println(spring.getSeasonName());
spring.show();
}
}
class Season{
//4.在类体内创建枚举类对象 public static final
public static final Season SPRING = new Season("SPRING","春天");
public static final Season SUMMER = new Season("SUMMER","夏天");
public static final Season AUTUMN = new Season("AUTUMN","秋天");
public static final Season WINTER = new Season("WINTER","冬天");
//1.提供类的属性,并声明为private final
private final String seasonName;
private final String seasonDesc;
//2.将声明为private final的属性在私有化的构造器中初始化
private Season(String seasonName, String seasonDesc){
this.seasonName = seasonName;
this.seasonDesc = seasonDesc;
}
//3.通过公共的方法来调用私有属性
public String getSeasonName() {
return seasonName;
}
public String getSeasonDesc() {
return seasonDesc;
}
@Override
public String toString() {
return "Season [seasonName=" + seasonName + ", seasonDesc="
+ seasonDesc + "]";
}
public void show(){
System.out.println("这是一个季节!");
}
}
使用接口表示一组范围
public class TestColor {
public static void main(String[] args) {
System.out.println(Color.RED + Color.GREEN);
}
}
interface Color{
public static final int RED = 1;
public static final int GREEN = 2;
public static final int BLUE = 3;
}