枚举Enum

本文介绍了Java中枚举类型的使用,包括枚举的优点,如提高代码可读性和减少传递参数错误,以及如何在switch语句中使用。枚举的常用方法如values()、ordinal()、valueOf()和compareTo()也在文中详细阐述,并通过示例展示了它们的用法。同时,文章还探讨了枚举的缺点,即无法继承和扩展。
摘要由CSDN通过智能技术生成

目录

1. 为什么要使用枚举

2. 枚举的优点

 3. switch判断 

 4. 枚举的常用方法 

        4.1 values()使用

        4.2 ordinal() 使⽤

        4.3 valueOf() 使⽤

        4.4 compareTo() 使⽤

5. 枚举的缺点


1. 为什么要使用枚举

枚举是在 JDK 1 . 5 引⼊的,主要是⽤来表示⼀组相同业务的值,⽐如我们要实现卖⻋的程序,我们要定义⼀组颜⾊来穷举这辆⻋所提供的所有颜⾊,在没有枚举之前,我们是这样实现的:
public static int final RED = 1;
public static int final GREEN = 2;
public static int final BLACK = 3;

此时,这些代码存在3个问题:

        1. 代码可读性低。比如说,当看到数字2,不能准确地知道它代表的具体是什么颜色,得去代码里面查。

        2. 参数传递容易出错。以上代码类型为 int,所以在传递时理论上是可以接受所有的 int 值的,但只 有部分值是有效的颜⾊,所有很容易传递值出错。

        3. 写法不够优雅。在外层(外边类)调⽤时,看到的都是⼀个个魔法数字,很让⼈很疑惑。

2. 枚举的优点

枚举:
public enum ColorEnum {
    RED, GREEN, BLACK; 
}
它的优点有以下⼏个:
        1. 增强了代码的可读性。
         (1. System.out.println("1");       2. System.out.println(ColorEnum.RED);)
        2. 减少了传递参数的错误概率。
        3. switch 判断更⽅便,语法清晰。
        4. 代码⾜够简洁、优雅。

 3. switch判断 

public enum ColorEnum {
    RED, GREEN, BLACK;
    public static void main(String[] args) {
        ColorEnum colorEnum = ColorEnum.GREEN;
        switch (colorEnum) {
            case RED:
                System.out.println("红⾊");
                break;
            case BLACK:
                System.out.println("⿊⾊");
                break;
            case GREEN:
                System.out.println("绿⾊");
                break;
            default:
                System.out.println("其他颜⾊");
                break;
       }
   }
}

 4. 枚举的常用方法 

        4.1 values()使用

                以数组形式返回枚举类型的所有成员

enum ColorEnum {
    RED, GREEN, BLACK;
    public static void main(String[] args) {
        for (ColorEnum colorEnum : ColorEnum.values()) {
            System.out.println(colorEnum);
       }
   }
}

// 输出: RED  GREEn  BLACK

        4.2 ordinal() 使⽤

                获取枚举成员的索引位置

enum ColorEnum {
    RED, GREEN, BLACK;
    public static void main(String[] args) {
        for (ColorEnum colorEnum : ColorEnum.values()) {
             int enumIdx = colorEnum.ordinal();
            System.out.println(colorEnum + ":" + colorEnum.ordinal());
       }
   }
}

//输出: RED : 0   GREEN : 1   BLACK : 2

        4.3 valueOf() 使⽤

                将普通字符串转换为枚举类型

enum ColorEnum {
    RED, GREEN, BLACK;
    public static void main(String[] args) {

     String color = "RED";
        //因为枚举类型传入的可以是所有,因此使用try。。。catch。。。抛出异常
        //将字符串转换成枚举类型
        try{
            ColourEnum colourEnum = ColourEnum.valueOf(color);
           System.out.println(colorEnum.ordinal());
        } catch(Exception e) {
            System.out.println("枚举转换异常");
        }
   }
}

//输出: 0

        4.4 compareTo() 使⽤

                比较两个枚举成员在定义时的顺序。 ⽐较两个枚举成员在定义时的顺序,返回值为 -1/0/1

enum ColorEnum {
    RED, GREEN, BLACK;
    public static void main(String[] args) {
        System.out.println(ColorEnum.RED.compareTo(ColorEnum.GREEN));
   }
}

// 输出: -1
// RED下标为0,GREEN下标为1,BLACK下标为2 
// 用RED的下标减去GREEN的下标
// A 在 B前⾯(A.compareTo(B))返回的是 -1,等于是0,A 在 B后⾯就是 1。

5. 枚举的缺点

         不可继承,⽆法扩展。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值