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的枚举内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java中ThreadPoolExecutor拒绝策略踩坑

    Java中ThreadPoolExecutor拒绝策略踩坑

    本文主要介绍了Java中ThreadPoolExecutor拒绝策略踩坑,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • 浅谈Java 类中各成分加载顺序和内存中的存放位置

    浅谈Java 类中各成分加载顺序和内存中的存放位置

    下面小编就为大家带来一篇浅谈Java 类中各成分加载顺序和内存中的存放位置。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-02-02
  • Java泛型枚举Annotation接口详细解读与Eclipse发展

    Java泛型枚举Annotation接口详细解读与Eclipse发展

    这篇文章主要给大家介绍了关于Java中方法使用的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-08-08
  • Java RandomAccessFile基本文件操作示例

    Java RandomAccessFile基本文件操作示例

    这篇文章主要介绍了Java RandomAccessFile基本文件操作,结合实例形式分析了Java基于RandomAccessFile实现文件读写及文件随机访问相关操作技巧,需要的朋友可以参考下
    2019-09-09
  • SpringBoot 2.7.18 集成 Mybatis Plus + Druid的实例详解

    SpringBoot 2.7.18 集成 Mybatis Plus + Druid的实例详解

    Mybatis和MybatisPlus都是流行的持久层框架,MybatisPlus在Mybatis基础上增加了更多便捷的功能,如自动CRUD、分页插件等,文章还提到了Entity、Mapper、Service、Controller等组件的基本使用方法,为开发者提供了一套完整的集成方案
    2024-10-10
  • QueryWrapper中查询的坑及解决

    QueryWrapper中查询的坑及解决

    这篇文章主要介绍了QueryWrapper中查询的坑及解决方案,具有很好的参考价值,希望对大家有所帮助。
    2022-01-01
  • 理解HashSet里为什么value不是null

    理解HashSet里为什么value不是null

    你有没有想过Java中HashSet的Value为什么要存PRESENT而不是Null?带着这个疑问来看下边的文章寻找答案吧
    2021-09-09
  • Java装饰者模式的深入了解

    Java装饰者模式的深入了解

    这篇文章主要为大家介绍了Java装饰者模式,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-01-01
  • java编程Reference核心原理示例源码分析

    java编程Reference核心原理示例源码分析

    这篇文章主要为大家介绍了java编程Reference的核心原理以及示例源码分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步早日升职加薪
    2022-01-01
  • mybatis打印SQL,并显示参数的实例

    mybatis打印SQL,并显示参数的实例

    这篇文章主要介绍了mybatis打印SQL,并显示参数的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12

最新评论