Java中枚举的使用方法详解

 更新时间:2023年07月15日 09:02:38   作者:信橙则灵  
这篇文章主要介绍了Java中枚举的使用方法详解,比如我们想声明一组季节的集合,那这里面最多有四种,即春夏秋冬,不允许有其他的季节,那为了实现这种限制,体现出季节是固定的四个对象,我们可以使用枚举,需要的朋友可以参考下

枚举介绍(enumeration)

枚举:把具体的对象一个个的列举出来的类,称为枚举类。

枚举对应的是一组常量的集合枚举属于一种特殊的类,里面只包含一组有限的特点的对象

解释:比如我们想声明一组季节的集合,那这里面最多有四种,即春夏秋冬,不允许有其他的季节,那为了实现这种限制,体现出季节是固定的四个对象,我们可以使用枚举。

在这里插入图片描述

枚举的实现方式

自定义类实现枚举

1、将构造器私有化(私有化即private),目的是为了防止,直接new对象
2、去掉set相关的方法,防止属性被修改
3、在类的内部创建固定的对象;
4、优化,添加final修饰符,实现底层优化。

在这里插入图片描述

  • 构造器私有化(private)
  • 本类内部创建一组对象[春、夏、秋、冬]
  • 对外暴露对象(通过为对象添加public final static修饰符)
  • 可以提供get方法,不能提供set方法(不允许进行属性的修改)
package com.zhangch.enum_;
public class Enumeration02 {
    public static void main(String[] args) {
        Season spring = Season.SPRING;
        System.out.println(spring);
    }
}
class Season{
    private String name;
    private String desc;
    // 3、通过static final 方法,对外暴露对象
    public static final Season SPRING = new Season("春", "阳光明媚");
    public static final Season SUMMER = new Season("夏", "炎热");
    // 1、构造器私有化
    private Season(String name, String desc) {
        this.name = name;
        this.desc = desc;
    }
    // 2、取消set方法,防止对属性进行修改
    public String getDesc() {
        return desc;
    }
    public String getName() {
        return name;
    }
    @Override
    public String toString() {
        return "Season{" +
                "name='" + name + '\'' +
                ", desc='" + desc + '\'' +
                '}';
    }
}

enum关键字实现枚举

1、将类的声明关键字从 class 替换为 enum
2、声明枚举常量对象的格式为: SPRING(“春天”, “温暖”) → 常量名(参数列表);
其实enum相当于讲对象的声明简化了:

SUMMER(“夏天”, “炎热”); 等同于:public static final Season SUMMER = new Season(“夏”, “炎热”);

在这里插入图片描述

3、如果声明多个枚举常量(对象),则使用 逗号 进行隔开;

4、如果使用enum实现枚举,要求将定义的常量对象,写在对象最前面

package com.zhangch.enum_;
/**
 * @author zhangch
 * @version 1.0
 */
public class Enumeration01 {
    public static void main(String[] args) {
        System.out.println(Season.SPRING);
    }
}
// 演示自定义枚举
enum Season{
    // 1、使用enum关键字替换class
    // 2、声明枚举常量对象的方式: SPRING("夏天", "炎热") -->  常量名(参数列表)
    // 3、如果有多个常量(对象),使用逗号隔开
    // 4、如果使用enum实现枚举,要求将定义的常量对象,写在对象前面。
    SPRING("春天", "温暖"), SUMMER("夏天", "炎热");
    private String name;
    private String desc;
    private Season(String name, String desc) {
        this.name = name;
        this.desc = desc;
    }
    public String getName() {
        return name;
    }
    public String getDesc() {
        return desc;
    }
    @Override
    public String toString() {
        return "Season{" +
                "name='" + name + '\'' +
                ", desc='" + desc + '\'' +
                '}';
    }
}

注意细节

1、当我们使用enum关键字修饰类的时候,默认汇集成Enum类,而且是一个final类可通过javap进行反编译(class文件到java文件)来进行查看 (javac为编译java文件到class文件)

在这里插入图片描述

2、当我们使用 无参构造器 创建 枚举常量对象 时,则实参列表和小括号均可以省略;

在这里插入图片描述

3、当有多个枚举对象时,使用 逗号 进行分隔, 最后使用 分号 进行结尾

4、枚举对象必须放在枚举类的行首。

enum常用方法说明

1、使用关键字enum时,会隐式的继承Enum类,这样我们就可以使用Enum里面的方法

在这里插入图片描述

valueOf: 将枚举常量的名称 作为参数 传递给枚举对象 ,找到后会返回与参数匹配的枚举常量。

Season value = Season.valueOf("SPRING");System.out.println(value);

ordinal: 得到当前枚举常量的编号,默认从 0 开始;即方法values返回的下标。

name:得到当前枚举常量的名称,建议使用 toString() 方法

compareTo:比较两个枚举常量的大小,使用枚举常量的编号相减的方式获取对应的大小。如果为0,则证明相等。

values: 返回当前枚举类中的所有枚举常量;

使用注意

使用enum关键字后,该类就不能再继承其他类了(单继承机制),但是,仍然可以使用接口继承

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

相关文章

  • Okhttp在SpringBoot中的应用实战记录(太强了)

    Okhttp在SpringBoot中的应用实战记录(太强了)

    这篇文章主要给大家介绍了关于Okhttp在SpringBoot中应用实战的相关资料,在Spring Boot中使用OkHttp主要是为了发送HTTP请求和处理响应,OkHttp是一个高效、易用的HTTP客户端库,它具有简洁的API和强大的功能,需要的朋友可以参考下
    2023-12-12
  • Trace 在多线程异步体系下传递流程解析

    Trace 在多线程异步体系下传递流程解析

    这篇文章主要为大家介绍了Trace 在多线程异步体系下传递流程解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-12-12
  • IDEA Error:java: 无效的源发行版: 17错误

    IDEA Error:java: 无效的源发行版: 17错误

    本文主要介绍了IDEA Error:java: 无效的源发行版: 17错误,这个错误是因为您的IDEA编译器不支持Java 17版本,您需要更新您的IDEA编译器或者将您的Java版本降级到IDEA支持的版本,本文就来详细的介绍一下
    2023-08-08
  • SpringBoot超详细深入讲解底层原理

    SpringBoot超详细深入讲解底层原理

    我们知道springboot内部是通过spring框架内嵌Tomcat实现的,当然也可以内嵌jetty,undertow等等web框架;另外springboot还有一个特别重要的功能就是自动装配,这又是如何实现的呢
    2022-07-07
  • java后台处理前端传的json串方法

    java后台处理前端传的json串方法

    今天小编就为大家分享一篇java后台处理前端传的json串方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-08-08
  • grpc-java k8s下的负载均衡处理方法

    grpc-java k8s下的负载均衡处理方法

    这篇文章主要为大家介绍了grpc-java k8s下的负载均衡的处理方法,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-02-02
  • JAVA API 实用类 String详解

    JAVA API 实用类 String详解

    这篇文章主要介绍了java String的深入理解的相关资料,希望通过本文大家能理解String的用法,需要的朋友可以参考下
    2021-10-10
  • IDEA使用SequenceDiagram插件绘制时序图的方法

    IDEA使用SequenceDiagram插件绘制时序图的方法

    这篇文章主要介绍了IDEA使用SequenceDiagram插件绘制时序图的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • java根据图片中绿色像素点的多少进行排序

    java根据图片中绿色像素点的多少进行排序

    这篇文章主要介绍了java根据图片中绿色像素点的多少进行排序,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • 日历显示读出输入的年月的java代码

    日历显示读出输入的年月的java代码

    这篇文章主要介绍了日历显示读出输入的年月的java代码,有需要的朋友可以参考一下
    2013-12-12

最新评论