【Java】枚举类

Java基础之Java枚举 絮叨 昨天刚好有遇到一个枚举的小问题,然后发现自己并不是那么熟悉它,然后在开发中,枚举用的特别多,所以有了今天的文章。 什么是枚举 Java中的枚举是一种类型,顾名思义:就是一个一个列举出来。所以它一般都是表示一个有限的集合类型,它是一种类型,在维基百科中给出的定义是: 在数学和计算机科学理论中,一个集的枚举是列出某些有穷序列集的所有成员的程序,或者是一种特定类型对象的计数。这两种类型经常(但不总是)重叠.。枚举是一个被命名的整型常数的集合,枚举在日常生活中很常见,例如表示星期的SUNDAY、MO 阅读详情

枚举类的使用

  • 枚举类的理解:类的对象只有有限个,确定的。我们称此类为枚举类
  • 当需要定义一组常量时,强烈建议使用枚举类
  • 如果枚举类中只有一个对象,则可以作为单例模式的实现方式。

如何定义枚举类

方式一:jdk5.0之前,自定义枚举类

//自定义枚举类
class Season{
//1.声明Season对象的属性:private final修饰
private final String seasonName;
private final String seasonDesc;

class Season{
    //1.声明Season对象的属性:private final修饰
    private final String seasonName;
    private final String seasonDesc;

    //2.私有化类的构造器,并给对象属性赋值
    private Season(String seasonName,String seasonDesc){
        this.seasonName = seasonName;
        this.seasonDesc = seasonDesc;
    }

    //3.提供当前枚举类的多个对象:public static final的
    public static final Season SPRING = new Season("春天","春暖花开");
    public static final Season SUMMER = new Season("夏天","夏日炎炎");
    public static final Season AUTUMN = new Season("秋天","秋高气爽");
    public static final Season WINTER = new Season("冬天","冰天雪地");

    //4.其他诉求1:获取枚举类对象的属性
    public String getSeasonName() {
        return seasonName;
    }

    public String getSeasonDesc() {
        return seasonDesc;
    }
    //4.其他诉求1:提供toString()
    @Override
    public String toString() {
        return "Season{" +
                "seasonName='" + seasonName + '\'' +
                ", seasonDesc='" + seasonDesc + '\'' +
                '}';
    }
}

方式二:jdk5.0,可以使用enum关键字定义枚举类

使用 enum 定义的枚举类默认继承了 java.lang.Enum类,因此不能再继承其他类

枚举类的构造器只能使用 private 权限修饰符

枚举类的所有实例必须在枚举类中显式列出(, 用于分隔 ; 用于结尾)。列出的实例系统会自动添加 public static final 修饰

必须在枚举类的第一行声明枚举类对象

enum Season1 implements Info{
    //1.提供当前枚举类的对象,多个对象之间用","隔开,末尾对象";"结束
    SPRING("春天","春暖花开"),
    SUMMER("夏天","夏日炎炎"),
    AUTUMN("秋天","秋高气爽"),
    WINTER("冬天","冰天雪地");

    //2.声明Season对象的属性:private final修饰
    private final String seasonName;
    private final String seasonDesc;

    //2.私有化类的构造器,并给对象属性赋值

    private Season1(String seasonName,String seasonDesc){
        this.seasonName = seasonName;
        this.seasonDesc = seasonDesc;
    }

    //4.其他诉求1:获取枚举类对象的属性
    public String getSeasonName() {
        return seasonName;
    }

    public String getSeasonDesc() {
        return seasonDesc;
    }
//    //4.其他诉求1:提供toString()
//
//    @Override
//    public String toString() {
//        return "Season1{" +
//                "seasonName='" + seasonName + '\'' +
//                ", seasonDesc='" + seasonDesc + '\'' +
//                '}';
//    }

}

Enum类的主要方法

toString()

返回枚举类对象的名称

values()

返回所有的枚举类对象构成的数组

Season1[] values = Season1.values();
        for(int i = 0;i < values.length;i++){
            System.out.println(values[i]);
        }

valueOf(String objName)

返回枚举类中对象名是objName的对象

 Season1 winter = Season1.valueOf("WINTER");
        //如果没有objName的枚举类对象,则抛异常:IllegalArgumentException
//        Season1 winter = Season1.valueOf("WINTER1");
        System.out.println(winter);

使用enum关键字定义的枚举类实现接口的情况

情况一:实现接口,在enum类中实现抽象方法

interface Info{
    void show();
}
enum Season1 implements Info{
    SPRING("春天","春暖花开"),
    SUMMER("夏天","夏日炎炎"),
    AUTUMN("秋天","秋高气爽"),
    WINTER("冬天","冰天雪地");

    private final String seasonName;
    private final String seasonDesc;

    private Season1(String seasonName,String seasonDesc){
        this.seasonName = seasonName;
        this.seasonDesc = seasonDesc;
    }

    public String getSeasonName() {
        return seasonName;
    }

    public String getSeasonDesc() {
        return seasonDesc;
    }

    @Override
    public void show() {
      System.out.println("这是一个季节");  
    }
}

情况二:让枚举类的对象分别实现接口中的抽象方法

interface Info{
    void show();
}
enum Season1 implements Info{
    SPRING("春天","春暖花开"){
        @Override
        public void show() {
            System.out.println("春天在哪里?");
        }
    },
    SUMMER("夏天","夏日炎炎"){
        @Override
        public void show() {
            System.out.println("宁夏");
        }
    },
    AUTUMN("秋天","秋高气爽"){
        @Override
        public void show() {
            System.out.println("秋天不回来");
        }
    },
    WINTER("冬天","冰天雪地"){
        @Override
        public void show() {
            System.out.println("大约在冬季");
        }
    };

    private final String seasonName;
    private final String seasonDesc;

    private Season1(String seasonName,String seasonDesc){
        this.seasonName = seasonName;
        this.seasonDesc = seasonDesc;
    }

    public String getSeasonName() {
        return seasonName;
    }

    public String getSeasonDesc() {
        return seasonDesc;
    }


    @Override
    public void show() {
        System.out.println("这是一个季节");
    }
}

可以对每一个枚举类的对象实现该接口,这样调用不同的对象,结果也就不一样。

NXP KW47蓝牙MCU低功耗实测:从8μA睡眠到5年续航的优化实战 在物联网和嵌入式系统开发中,低功耗设计是决定电池供电设备续航能力的关键技术。其核心原理在于通过事件驱动、状态机管理和精细的电源域控制,使设备在空闲时进入深度睡眠,仅在需要时快速唤醒工作,从而将平均电流从毫安级降至微安级。这项技术的工程价值在于能够实现纽扣电池供电设备长达数年的使用寿命,广泛应用于智能家居传感器、可穿戴设备、资产追踪和工业监测等领域。以NXP KW47系列无线MCU为例,其集成的Arm Cortex-M33双核与专用射频单元,配合多级睡眠模式和高效DC-DC转换器,为超低功耗蓝牙应用提供了硬件 阅读详情

相关推荐

用Python玩转LQR控制:3行核心代码实现倒立摆稳定控制(附Jupyter Notebook)

本文通过Python实战演示了如何使用LQR算法实现倒立摆的稳定控制。文章以直观方式解释LQR原理,提供从系统建模、核心代码求解到参数调优的完整流程,并附有可运行的Jupyter Notebook代码。重点介绍了如何利用SciPy库快速计算最优反馈增益,并通过仿真验证控制效果,为运动控制实践提供了即学即用的指南。

weixin_29311017的博客 83

【Java】枚举类型

枚举类型是一种特殊的数据类型,用于定义一组固定的命名常量。枚举类型提供了一种更强大、更安全和更易读的方式来表示一组相关的常量。在Java中,枚举类型是通过使用enum关键字来定义的。枚举类型可以包含一个或多个枚举常量,每个常量都是枚举类型的实例。枚举常量是在枚举类型中预先定义的,它们是唯一的、已命名的对象。

qq_61635026的博客 2万+

VsCode安装和配置c/c++环境(超完整,小白专用)

1. vsCode配置C/C++环境 1. vsCode下载和安装 1. 下载Microsoft vsCode [vsCode在这里插入图片描述官网下载: https://code.visualstudio.com/ 2. 安装vsCode 3. 下载中文插件 我这边已经下载过,刚卸载但是没有重启编译器,所以界面显示了中文 2. MinGW编译器下载和配置 1. 下载MinGW 在线安装——下载MinGW-W64-install.exe(速度慢) 下载压缩包——×86_64-posix-

黄化的多多 60万+

java中的枚举

介绍:java中枚举类属于一种特殊的数据类型,用于定义一组常量。枚举类型可以帮助我们组织和管理相关的常量,使得代码更加清晰、可读性更强。抛出一个问题:java数据类型这么多,为什么还要来一个枚举?枚举的核心是将一组相关的常量封装在一个类型安全的枚举中,使得代码更加清晰、可读、可维护,同时提供了更多类型安全的保障。在实际开发中,枚举常常用于表示一组相关的常量,例如表示一周的天数、表示颜色、表示状态等等。

qq_72114625的博客 6782

香橙派5B-RK3588-NPU内核升级至0.9.8:RKLLM多模态部署实战

本文详细介绍了香橙派5B-RK3588设备NPU内核升级至0.9.8版本的完整流程,重点讲解了升级的必要性、两种升级方案(预编译包安装与自行编译内核)以及RKLLM SDK的安装配置。通过实战演示多模态模型转换与推理,显著提升AI计算性能,为嵌入式AI部署提供实用指南。

salt9的博客 1024

ARM Cortex-M系列授权解析:从研发到量产的免费与付费之路

本文深入解析了ARM Cortex-M系列内核从研发到量产过程中的授权模式。研发阶段可利用ARM DesignStart等免费资源进行原型验证,但产品商业化量产则需支付授权费与版税。文章对比了采购商用MCU与自研芯片的成本差异,并探讨了RISC-V作为免费替代方案在IoT领域的应用前景与挑战,为开发者提供了清晰的选型指南。

weixin_29292431的博客 493

Java——枚举类

enum Day {MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY,SUNDAY // 这里如果只是定义这些枚举常量的话,则这里不需要分号,// 如果后面还有其他成员,则需要分号实际上枚举类的构造器默认是私有的,如果你自己定义了一个构造器,没有加访问修饰符的话,就是默认 private 的。SPRING("温暖"),SUMMER("炎热"),AUTUMN("凉爽"),WINTER("寒冷");

Stewie Lee的博客 5877

AutoDL跑yolo

由于博主在AutoDL的JupyterLab的终端直接上传ZIp文件要么老是再上传中被中断,要么就是上传后使用unzip指令解压显示“找不到”,作为纯小白的我实在太难了!这个文件列出了一个 Python 项目所需的所有依赖包及其精确的版本号。这个文件是 Python 项目中常见的一种方式,用于确保项目在不同环境中都能以相同的依赖包配置运行。3.进入JupyterLab,在文件夹目录中找到上传的文件夹,右键点击“复制路径”。然后在终端中输入以下指令进行切换到该文件夹路径。9.安装成功后开始输入指令开跑!

m0_73804659的博客 1203

java基础之枚举类

枚举类相比常量更具优势,主要体现在类型安全和代码可读性上。使用常量(如int类型)无法限制调用者传递无效值(如传递5、6等非法值),而枚举类通过定义有限的枚举实例,可以严格限制参数的取值范围。枚举类本质上是一个final类,构造器私有化,确保只有预定义的实例存在。此外,枚举类支持switch语句、成员变量和方法,提供了更好的封装性和灵活性。因此,枚举类更适合用于表示固定范围的常量集合,如季节、性别等场景。

ChenYiRan123456的博客 1万+

【Qt开发】管理OpenGL上下文QOpenGLContext类及应用实践示例代码

QOpenGLContext 提供了一个简单、高效的接口来管理 OpenGL 上下文。本文详细介绍了 QOpenGLContext 的基本功能、常用方法、信号槽机制、高级应用技巧及常见问题的解决方法。通过这些介绍,读者可以更好地掌握和利用 QOpenGLContext 进行 OpenGL 渲染和管理实验。对于有特殊需求的开发者,也可以通过探索更多高级设置和优化策略,以满足具体的应用场景。

科技改变人类,技术成就未来 1871

数据分析之AB测试基础知识

在 A/B 测试中,零假设是两组的指标是相同的,当假设检验推断出两组指标不同,但事实上两组指标相同时,就是第一类错误。

qq_45727498的博客 560

创建枚举类 java_Java枚举类

Java枚举类创建自定义枚举类public class Season {// 属性private final String seasonName;private final String seasonDesc;// 构造器私有化,外接不能调用这个构造器private Season(String seasonName, String seasonDesc) {this.seasonName = se...

weixin_42545664的博客 2351

MATLAB基础应用精讲-【深度强化学习】SAC(Soft Actor-Critic)算法(附MATLAB和python代码实现)

Actor 网络:用于选择动作。Critic 1 和 Critic 2 网络:用于估计 Q 值。Target Critic 1 和 Target Critic 2:与 Critic 网络架构相同,用于生成更稳定的目标 Q 值。,即在保证探索的情况下选择高价值动作。软更新目标 Q 网络参数,使得目标网络参数缓慢向当前网络靠近,避免振荡。

qq_36130719的博客 454

JAVA 中的枚举类

JDK 1.5 新增了一个关键字 enum(它与 class、interface 关键字的地位相同),用来定义枚举类。枚举类是一种特殊的类,它同样可以有自己的成员方法、成员变量、构造器,同时还可用实现一个或者多个接口。对应普通的 Java类,一个源文件中只能够定义一个使用 public 修饰的类,同样的枚举类跟普通的 Java 类一样,一个 Java 一个源文件中也只能够定义一个使用 public 修饰的枚举类,且 Java 源文件名也必须和 public 修饰的枚举类的类名相同。

weixin_54851039的博客 1550

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

【Java基础】Java枚举类详解

注意:Java枚举中的values()方法是一个特殊的存在:​它并非由java.lang.Enum类提供,而是由Java编译器(javac)在编译枚举类时自动生成的。虽然自定义枚举类可以实现枚举类的特点,但是用枚举类实现更简洁快速,且代码可读性高,扩展性强,下面用枚举类实现该特点。2 枚举类隐式实现 java.lang.Enum类,不能继承其他类,但可以实现接口。6 为了符合枚举类特点,枚举类成员变量用private修饰,对外提供读取访问方法。3 枚举类本身被final修饰,不能被其他类继承。

weixin_43336978的博客 2677

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

java枚举类

假设我有一个类叫Week的普通实体类,可以创建周一到周日,但是我传入周十一,这个类同样可以创建成功。为了安全调用,我们需要把可以创建的日期固定下来,但是光固定下来之后,如果类里有set方法,name还是可以背改变的,为了适应这种情况枚举类就应运而生。

m0_47641803的博客 1998

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

java-枚举类的定义及使用

文章目录枚举类的定义jdk5.0之前定义枚举类jdk5.0之后定义枚举类使用enum关键字定义枚举类使用enum关键字定义的枚举类实现接口 枚举类的定义 关于枚举类 1 枚举类的理解:类的对象只有有限个,确定的。我们称此类为枚举类 2 当需要定义一组常量时,强烈建议使用枚类类 3 如果枚举类中只有一个对象,则可以作为单例模式的实现方式。 如何定义枚举类 方式一:jdk5.0之前,自定义枚举类 方式二:jdk5.0之后,可以使用enum关键字定义枚举类 jdk5.0之前定义枚举类 /** * jdk5.0之

记录学习点滴 8932

Java 枚举类简单使用

1 简单的枚举类 // 创建一个枚举类 package com.lihaogn.test; public enum SeasonEnum { // 定义四个枚举实例 SPRING,SUMMER,AUTUMN,WINTER; } // 测试类 package com.lihaogn.test; public class Test { public static void main(St...

lihaogn的博客 9894

java枚举类详解

枚举类基础

weixin_43604021的博客 3836

Java枚举类

Java枚举类 为什么引用枚举类 引入枚举类是为了在程序中更方便地定义一组相关的常量。枚举类可以将一组具有相同属性或类型的常量进行封装,使得代码更加清晰、易读,并能提高代码的可维护性和可扩展性。 使用枚举类的好处包括: 清晰明确:枚举类可以为常量赋予一个有意义的名字,使得代码的含义更加清晰明了。 类型安全:枚举类提供了类型安全的保证,避免了传入不合法的参数值。 可维护性:通过使用枚举类,可以集中管理相关的常量,当需要修改或添加新的常量时,只需在枚举类中进行修改即可。 可读性:使用枚举类可以使代码更加易读,

sheep55的博客 1284

java——枚举类

枚举类       在某些情况下,一个累的对象是有限而且固定的,比如季节类,它只有4个对象(春、夏、秋、冬);再比如交通灯类,只有3个对象(红、绿、黄)。这种实例有限而且固定的类,在Java里被称为枚举类。 以前与现在的枚举类的对比       在早期代码中,可能会直接使用简单的静态常量来表示枚举,例如以下代码: public class State { public static f

wilson_m的博客 465

Java 枚举类

enum 关键字是JDK1.5时新增的,那1.5之前是怎么创建枚举类的呢? 自定义枚举类 创建自定义枚举类之前,我们先说下枚举类有哪些特性: 枚举动类对象的属性不应允许被改动, 应该使用 private final修饰 枚举类的使用 private final 修饰的属性应为其赋值,比如使用构造器赋值 若枚举类显式的定义了带参数的构造器, 则在列出枚举值时也必须对应的传入参数 代码示例: public class SeasonTest { public static void main(St

逆流者的博客 340

Java中的枚举类

Java中的枚举类励志语录枚举类介绍自定义枚举类用enum关键字定义枚举类枚举类的方法枚举类实现接口 励志语录 永不言败,是成功者的最佳品格。 枚举类介绍 什么是枚举类?可以认为如果一个类的对象是有限可数的时,那么我们就称这种类为枚举类 自定义枚举类 根据之前学到的知识,我们可以推得枚举类应该有一下几个特点: 构造器用private修饰 在类中创建有限个该类的对象 该类对象用final与static修饰 该类中对象的属性应为final 提供实例变量的get方法 代码示例: class Session{

qq_41819196的博客 279

Java基础之枚举类

/我们就以四大著名小说为例子//定义了四个常量用static修饰就可以保证不创建对象也能方法//用final修饰表示这个对象的引用不能再被赋新的地址public static final Book 三国演义 = new Book("三国演义", 20);public static final Book 水浒 = new Book("水浒", 30);public static final Book 红楼梦 = new Book("红楼梦", 40);

m0_71031876的博客 987
上一篇: 【Java常用类】BigDecimal
下一篇: 【Java】注解Annotation
Sancean
博客等级 码龄6年 2472粉丝 149原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值