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

 更新时间:2023年11月11日 14:25:02   作者:CosperNXL  
这篇文章主要给大家介绍了关于Java中枚举类enum的values()方法举例详解,作为一种常用方法,可以在枚举中对数组里的枚举值进行遍历,这就是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()

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

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

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

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

总结

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

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

到此这篇关于Java中枚举类enum的values()方法举例详解的文章就介绍到这了,更多相关Java枚举类enum的values()方法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Spring 中 PageHelper 不生效问题及解决方法

    Spring 中 PageHelper 不生效问题及解决方法

    这篇文章主要介绍了Spring 中 PageHelper 不生效问题,使用这个插件时要注意版本的问题,不同的版本可能 PageHelper 不会生效,本文结合示例代码给大家介绍的非常详细,需要的朋友可以参考下
    2022-12-12
  • 详谈jvm线程栈空间内存分配位置

    详谈jvm线程栈空间内存分配位置

    这篇文章主要介绍了jvm线程栈空间内存分配位置,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • Spring Boot基于数据库如何实现简单的分布式锁

    Spring Boot基于数据库如何实现简单的分布式锁

    这篇文章主要给大家介绍了关于Spring Boot基于数据库如何实现简单的分布式锁的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Spring Boot具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-07-07
  • Springboot 1.5.7整合Kafka-client代码示例

    Springboot 1.5.7整合Kafka-client代码示例

    这篇文章主要介绍了Springboot 1.5.7整合Kafka-client代码示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-10-10
  • springcloud使用consul作为配置中心

    springcloud使用consul作为配置中心

    这篇文章主要介绍了springcloud使用consul作为配置中心,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-06-06
  • Java获取堆栈信息的三种方法小结

    Java获取堆栈信息的三种方法小结

    在Java编程中,获取堆栈信息对于调试和故障排除非常重要,Java提供了多种方式来获取当前线程的堆栈信息,下面就跟随小编一起学习一下常用的三种吧
    2024-03-03
  • MyBatis实现乐观锁和悲观锁的示例代码

    MyBatis实现乐观锁和悲观锁的示例代码

    在数据库操作中,乐观锁和悲观锁是两种常见的并发控制策略,本文主要介绍了MyBatis实现乐观锁和悲观锁的示例代码,具有一定的参考价值,感兴趣的可以了解一下
    2024-07-07
  • String.join()方法示例详解

    String.join()方法示例详解

    String.join() 方法是连接指定数组的元素或集合的成员,在每个元素或成员之间使用指定的分隔符,这篇文章主要介绍了String.join()方法示例详解,需要的朋友可以参考下
    2024-01-01
  • 将SpringBoot的Jar注册成Windows服务的实现方法

    将SpringBoot的Jar注册成Windows服务的实现方法

    当前项目有个地图编辑器,后端用的是SpringBoot框架,外网刚好有一台空闲的Windows服务器就直接拿来用了,将Java程序部署成Windows服务可以用WinSW (Windows Service Wrapper)来实现,文中有详细的操作步骤,需要的朋友可以参考下
    2023-11-11
  • Java实现多线程中的静态代理模式

    Java实现多线程中的静态代理模式

    静态代理属于设计模式中的代理模式。这篇文章主要介绍了Java实现多线程中的静态代理模式,详细的介绍了静态代理的使用,需要的朋友们下面随着小编来一起学习学习吧
    2021-05-05

最新评论