枚举类的使用

一、枚举类的简单用法

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));
    }
}
原文地址:https://www.cnblogs.com/ya-qiang/p/9445776.html