Java中枚举类enum的values()方法的详解

文章详细介绍了Java中枚举类enum的values()方法,该方法允许将枚举类型转换为数组,便于通过下标访问枚举常量。在编译时,Java编译器会自动为enum类添加values()方法。文章通过示例代码展示了如何使用values()遍历枚举常量,并提供了反编译结果以证明编译器的自动处理。
摘要由CSDN通过智能技术生成

Java中枚举类enum的values()方法的详解

简介:

枚举中的一个特殊方法,values(), 在Enum 的 API 文档中也找不到这个方法,当点击values()时,也会跳到本类上。
此方法可以理解为:将枚举类转变为一个枚举类型的数组,因为枚举中没有下标,我们没有办法通过下标来快速找到需要的枚举类,这时候,转变为数组之后,我们就可以通过数组的下标,来找到我们需要的枚举类。接下来就展示代码了。

示例:

public enum EnumText {
    CODE_TYPE_ONE("春天",1),

    CODE_TYPE_TWO("夏天",2),

    ERROR("数据错误",-1)

    ;

    private String label;
    private Integer value;

    EnumText(String label, Integer value) {
        this.label = label;
        this.value = value;
    }

    public Integer getValue() {
        return value;
    }

    public String getLabel() {
        return label;
    }
}
测试案例:
public class Client {
    public static void main(String[] args) {
        for (EnumText e:EnumText.values()){
            System.out.println(e);
        }
        System.out.println("-------------------------------------");
        for (EnumText e:EnumText.values()){
            System.out.println(e.getLabel());
        }
        System.out.println("-------------------------------------");
        for (EnumText e:EnumText.values()){
            System.out.println(e.getValue());
        }
    }
}
测试结果:
CODE_TYPE_ONE
CODE_TYPE_TWO
ERROR
-------------------------------------
春天
夏天
数据错误
-------------------------------------
1
2
-1

能这样写的原因就是因为values可以将Enum转化为一个数组,然后进行遍历。

为什么有values()

  1. 打开控制台cmd,进入要编译的文件目录
  2. 将.java文件编译
  3. 将编译成功后的.class文件反编译
//将.java文件编译
javac EnumText.java

//将编译成功后的.class文件反编译
javap -c EnumText.class >e.txt

打开e.txt文件后可以看到

image-20230406155839102

编译器已经自动为我们插入了**values()**方法了

总结

1.如果使用了enum关键字来声明枚举类,则声明的枚举类默认继承了Enum类,并且底层默认是一个final类

2.编写自定义的enum时,其中是不含values()方法的,再编译java文件时,java编译器会自动帮助我们生成这个方法

  • 9
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Java枚举类enum用于定义一组有限的常量。在Java 1.5之前,常量通常是使用public static final修饰的变量来定义的。而使用枚举类型可以更好地组织相关联的常量,并提供更多的方法操作。枚举类型的声明格式为:enum EnumName {ENUM_VALUE1, ENUM_VALUE2, ...}。其ENUM_VALUE1、ENUM_VALUE2等是枚举类型的常量。 枚举类型在Java有很多应用场景。例如,可以使用枚举类型来表示一周的星期几,定义颜色常量,定义状态等。通过使用枚举类型,可以增加代码的可读性和安全性。 此外,Java提供了一些与枚举类型相关的集合类,如EnumSet和EnumMap。EnumSet保证集合的元素不重复,而EnumMap的key是enum类型,而value可以是任意类型。这些集合类能够更方便地对枚举类型进行操作。 关于枚举类型的更多使用方法和规范,可以参考Java官方文档或阿里巴巴Java开发手册。123 #### 引用[.reference_title] - *1* *2* [Java枚举(enum)常用的用法总结](https://blog.csdn.net/qq_44866828/article/details/117380065)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}} ] [.reference_item] - *3* [Java 枚举(enum) 的常见用法和开发规范](https://blog.csdn.net/dichengyan0013/article/details/102347137)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}} ] [.reference_item] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值