JDK1.5新增的enum关键字用于定义枚举类。
枚举类和普通类的区别:
- 使用enum定义的枚举类默认继承了java.lang.Enum类;
- 枚举类的构造器只能使用private修饰符;
- 枚举类的所有实例必须在枚举类中显示列出(分隔;结尾)。列出的实例系统会自动添加public static final修饰;
- 所有的枚举类都提供了一个values方法,该方法可以很方便地遍历所有的枚举值;
JDK1.5中可以在switch表达式中使用枚举类的对象作为表达式,case子句可以直接使用枚举值的名字,无需添加枚举类作为限定。
若枚举只有一个成员,则可以作为一种单例模式的实现方式。
package anno; public class Test { public static void main(String[] args) { //这里获取一个Season对象 Season spring = Season.SPRING; spring.showInfo(); Season summer = Season.SUMMER; summer.showInfo(); Season autumn = Season.AUTUMN; autumn.showInfo(); Season winter = Season.WINTER; winter.showInfo(); spring.test(); //每次执行Season.SPRING获得的都是一个相同的对象,是一种单例模式 Season spring1 = Season.SPRING; System.out.println(spring==spring1); } } enum Season implements Tmp{ //这里相当于调用有参的私有构造方法 SPRING("春天","春暖花开"), SUMMER("夏天","炎炎夏日"), AUTUMN("秋天","秋高气爽"), WINTER("冬天","寒风凌冽"); private final String NAME; private final String DESC; private Season(String NAME, String DESC) { this.NAME = NAME; this.DESC = DESC; } public void showInfo() { System.out.println(this.NAME+":"+this.DESC); } @Override public void test() { // TODO Auto-generated method stub System.out.println("这是实现Tmp的方法"); } } interface Tmp{ void test(); }