zoukankan      html  css  js  c++  java
  • 枚举类的使用

    一、枚举类的简单用法

    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));
        }
    }
  • 相关阅读:
    迭代器模式
    工厂方法模式
    ajax发送多个跨域请求回调不混乱
    Java中&和&&的区别
    使用jstl方式替换服务器请求地址
    用jinja2替换Django的模板
    Django在apache中的配置
    从word中提取图片的三种方法
    IE中出现 "Stack overflow at line" 错误的解决方法
    c# 空接合(??)运算符的运用
  • 原文地址:https://www.cnblogs.com/ya-qiang/p/9445776.html
Copyright © 2011-2022 走看看