案例:使用枚举类型(enum)来定义Season类
public class enumTest {
public static void main(String[] args) {
//Season.SPRING 可以获取一个Season对象
Season spring = Season.SPRING;
spring.showInfo();
//重复执行Season.SPRING 所获取的Season对象都是同一个
//枚举类中的每个枚举都是单例模式的
Season spring1 = Season.SPRING;
System.out.println(spring1.equals(spring));
Season summer = Season.SUMMER;
summer.showInfo();
Season autumn = Season.AUTUMN;
autumn.showInfo();
Season winter = Season.WINTER;
winter.showInfo();
winter.test();
}
}
//枚举类可以比较简便地实现单例模式
enum Season implements ITest {
//此处相当于在调用私有的有参构造方法
SPRING("春天", "春暖花开"), //注:枚举常量之间用逗号隔开
SUMMER("夏天", "炎炎夏日"),
AUTUMN("秋天", "秋高气爽"),
WINTER("冬天", "寒风凛冽");
private Season(String name, String desc)
{
this.name = name;
this.desc = desc;
}
public void showInfo()
{
System.out.println(this.name + ": " + this.desc);
}
private final String name; //final修饰的成员变量变成了常量
private final String desc;
@Override
public void test() {
System.out.println("这是实现ITest接口的test方法");
}
}
interface ITest{
void test();
}
从案例可以总结出对枚举类的用法:
- 枚举类是一种特殊的类,因为已经继承了枚举类,所以不能再继承其他类
- 枚举类中的枚举常量之间用逗号隔开
- 枚举常量可以调用本类的构造方法,可以简便地实现单例模式
- 通过枚举类名.枚举常量名可以获取该类的一个对象,但是多次执行相同的枚举类名.枚举常量名所获取的是同一个对象
- 枚举类可以像普通类一样去实现接口