一、枚举类的简单用法
1. 定义一个枚举类
1 public enum SeasonEnum { 2 //在第一行列表4个枚举实例 3 //枚举类的所有实例必须在枚举类的第一行显示列出 4 SPRING,SUMMER,FALL,WINTER; 5 }
2. 定义一个枚举测试类
1 public class EnumTest { 2 public void judge(SeasonEnum s){ 3 switch (s){ 4 case SPRING: 5 System.out.println("春暖花开,正好踏青"); 6 break; 7 case SUMMER: 8 System.out.println("夏日炎炎,正好游泳"); 9 break; 10 case FALL: 11 System.out.println("秋高气爽,进补及时"); 12 break; 13 case WINTER: 14 System.out.println("冬日雪飘,围炉赏雪"); 15 break; 16 } 17 } 18 19 public static void main(String[] args) { 20 //枚举类默认有一个values()方法,返回该枚举类的所有实例 21 for (SeasonEnum s : 22 SeasonEnum.values()) { 23 System.out.println(s); 24 } 25 new EnumTest().judge(SeasonEnum.SPRING); 26 System.out.println(SeasonEnum.SPRING.compareTo(SeasonEnum.SUMMER)); 27 System.out.println(SeasonEnum.valueOf("SPRING")); 28 } 29 }
二、实现接口的枚举类
1. 定义一个接口
public interface GenderDesc { void info(); }
2. 定义一个实现接口的枚举类
1 /** 2 * 实现接口的枚举类 3 */ 4 public enum Gender implements GenderDesc { 5 //此处的枚举值必须调用对应的构造器来创建 6 //花括号部分实际上是一个实体部分 7 MALE("男") { 8 @Override 9 public void info() { 10 System.out.println("这个枚举值代表男性"); 11 } 12 }, 13 FEMALE("女"){ 14 @Override 15 public void info() { 16 System.out.println("这个枚举值代表女性"); 17 } 18 }; 19 //将成员变量设置为private防止外部类修改 20 private String name; 21 //枚举类的构造器只能使用private修饰 22 private Gender(String name){ 23 this.name = name; 24 } 25 public String getName(){ 26 return this.name; 27 } 28 }
3. 测试
/** * 性别枚举类测试 */ public class GenderTest { public static void main(String[] args) { System.out.println(Gender.FEMALE); Gender.FEMALE.info(); Gender.MALE.info(); } }
三、包含抽象方法的枚举类
/** * 包含抽象方法的枚举类 */ public enum Operation { PLUS{ @Override public double eval(double a, double b) { return a + b; } }, MINUS{ @Override public double eval(double a, double b) { return a - b; } }, TIMES{ @Override public double eval(double a, double b) { return a * b; } }, DIVIDE{ @Override public double eval(double a, double b) { return a / b; } }; //为枚举类定义一个抽象方法 //这个抽象方法由不同的枚举值提供不同的实现 public abstract double eval(double a,double b); public static void main(String[] args) { System.out.println(Operation.PLUS.eval(3,4)); System.out.println(Operation.MINUS.eval(5,2)); System.out.println(Operation.TIMES.eval(4,5)); System.out.println(Operation.DIVIDE.eval(5,6)); } }