Java enum

本文详细介绍了Java中的枚举类型enum,强调其作为安全的常量集合和可扩展的功能。枚举是不可继承的final类,提供编译时安全,每个枚举类型拥有独立的命名空间。示例展示了如何在enum中定义方法,以及如何在switch语句中使用enum进行计算。同时,通过覆盖方法和抽象方法,展示了如何在新增枚举常量时确保代码完整性和安全性。
摘要由CSDN通过智能技术生成

Java 枚举enum是一个特殊的类,一般表示一组相关常量,一年四季、多种颜色、星期等。并且可以提供比常量更多的方法。

特点:

  • 真正的final类,客户端不能创建实例,不能扩展。只有声明过的枚举常量。
  • 保证编译安全。不能将一种枚举类型表达式赋值给另外一种枚举类型变量。不能通过==比较不同枚举类型的值
  • 不同枚举类型有自己的命名空间,不同枚举类型可以有同名常量。
  • 可以添加方法、域或实现任意的接口。

例:

  • switch语句
  public enum Operation{
        PLUS("+"), SUB("-"), MULTIPLY("*"), DIVIDE("/");

      public double apply(double x,double y){
          switch (this){
              case PLUS:return x+y;
              case SUB :return x-y;
              case MULTIPLY:return x*y;
              case DIVIDE:return x/y;
              default:return -1;
          }
      }

        private final String str;
        Operation(String str) {this.str=str; }
        //覆盖方法
        @Override
        public String toString() { return  str; }

    }
  • 具体方法覆盖常量抽象apply方法,以便添加新常量时,编译器会提醒实现新常量特定方法。
public class ENUM {
    public enum Operation{
        PLUS("+"){
            public double apply(double x,double y){return x+y;}
        },
       SUB("-"){
            public double apply(double x,double y){return x-y;}
        },
        MULTIPLY("*"){
            public double apply(double x,double y){return x*y;}
        },
        PDIVIDE("/"){
            public double apply(double x,double y){return x/y;}
        };

        private final String str;
        Operation(String str) {this.str=str; }

        //覆盖方法,返回操作符号
        @Override
        public String toString() { return  str; }
        //抽象方法
        public abstract double apply(double x,double y);
    }

    public static void main(String[] args) {
        double x=3.14;
        double y=4.13;
        for(Operation op:Operation.values()){
            System.out.println(x+""+op+""+y+"="+op.apply(x,y));
        }
    }
}

输出结果

3.14+4.13=7.27
3.14-4.13=-0.9899999999999998
3.14*4.13=12.9682
3.14/4.13=0.7602905569007264
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值