Java中的枚举类,为什么要用枚举类以及使用注意事项和细节

news2025/3/3 5:28:44

要求:创建季节对象

分析:一年中只有4个季节,因此就不能让随意创建对象了

原本方法:

  1. 私有化构造器,避免了随意创建对象
  2. 不提供setXxx方法,避免了随意赋值,因为枚举对象值通常为只读
  3. 在本类中直接创建对象,并且是静态的(static),因为不是创建对象了,就必须是静态的才能访问的到。应该也要是final的,因为final+static共同修饰可以实现底层优化,这样就不会随着类的加载而执行,避免空间的浪费。因为是final的,所以枚举对象通常全部大写,常量的命名规范。

代码:

public class Primary {
    public static void main(String[] args) {

        System.out.println(Session.SPRING);
        System.out.println(Session.SUMMER);
        System.out.println(Session.AUTUMN);
        System.out.println(Session.WINTER);

        //可以直接用上面的方式,这边只是想练习一下增强for循环
        Session[] sessions = new Session[4];
        sessions[0] = Session.SPRING;
        sessions[1] = Session.SUMMER;
        sessions[2] = Session.AUTUMN;
        sessions[3] = Session.WINTER;
        for (Session session:sessions) {//增加for循环,将sessions中的值一个一个的取出来给session,直到全部取完
            System.out.println(session);
        }

        for (int i = 0; i < sessions.length; i++) {//普通for循环
            System.out.println(sessions[i]);
        }

    }
}

class Session{
    private String name;
    private String desc;

    private Session(String name, String desc) {
        this.name = name;
        this.desc = desc;
    }

    public String getName() {
        return name;
    }

    public String getDesc() {
        return desc;
    }
    
    public static final Session SPRING = new Session("春天","舒适");
    public static final Session SUMMER = new Session("夏天","炎热");
    public static final Session AUTUMN = new Session("秋天","凉爽");
    public static final Session WINTER = new Session("冬天","寒冷");

    @Override
    public String toString() {
        return "Session{" +
                "name='" + name + '\'' +
                ", desc='" + desc + '\'' +
                '}';
    }
}

 使用枚举类(enum):

  1. 使用enum替代class
  2. 私有化构造器,避免了随意创建对象
  3. 不提供setXxx方法,避免了随意赋值,因为枚举对象值通常为只读
  4. 不需要像之前那样创建对象了,直接在本类的首行,写上对象名(大写,常量的命名规范),要是有参数直接在()中写上参数。注意:对象要是有多个用逗号隔开,对象名只能方法第一行

代码:

public class Enum {
    public static void main(String[] args) {
        System.out.println(Session1.SPRING);
        System.out.println(Session1.SUMMER);
        System.out.println(Session1.AUTUMN);
        System.out.println(Session1.WINTER);
    }
}

enum Session1 {
    SPRING("春天", "舒适"), SUMMER("夏天", "炎热"),
    AUTUMN("秋天", "凉爽"), WINTER("冬天", "寒冷");//有多个对象放在首行,对象必须放在首行
    private final String name;//因为通过构造器直接初始了,所以这边定义成常量了
    private final String desc;

    Session1(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 "Session{" +
                "name='" + name + '\'' +
                ", desc='" + desc + '\'' +
                '}';
    }
}

注:当我们使用enum关键字开发一个枚举类时,默认会继承Enum类,因此enum类不能在继承其他的类,而且是一个final类,可以通过javap工具来证明。如下图:

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/925309.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

人工智能如何颠覆和改变信息安全格局

当谈及网络信息安全领域&#xff0c;人工智能&#xff08;AI&#xff09;正扮演着关键的角色。其作用是分析庞大的风险数据&#xff0c;以及企业信息系统中不同威胁之间的关联&#xff0c;从而识别出全新类型的攻击方式。这一过程的成果为各类网络安全团队提供了重要情报&#…

ModaHub魔搭社区:WinPlan经营大脑预算编制

目录 WinPlan经营大脑预算编制介绍 WinPlan经营大脑预算编制模版 WinPlan经营大脑预算模版管理 WinPlan经营大脑预算数据录入 WinPlan经营大脑预算编制介绍 预算编制时面向企业经营管理场景,创建各个业务单位的目标,包括销售目标、财务目标、人事目标等,实现各个业务单…

spring之Spring最佳实践与设计模式

Spring最佳实践与设计模式 Spring最佳实践与设计模式 摘要引言词汇解释详细介绍Spring最佳实践1. 使用依赖注入&#xff08;Dependency Injection&#xff09;2. 使用Spring Boot自动配置3. 使用日志框架 注意事项结合设计模式提升代码质量1. 单例模式2. 工厂模式 注意事项 总结…

基于Java+SpringBoot+vue前后端分离人口老龄化社区服务与管理平台设计实现

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

基于Java+SpringBoot+vue前后端分离宠物领养系统设计实现

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

安全技术和防火墙——iptables

安全技术&#xff1a; 1.入侵检测系统&#xff1a;不阻断任何网络访问&#xff0c;量化、定位来之内外网络的威胁情况&#xff0c;主要以提供报警和事后监督为主&#xff0c;提供有针对性的指导措施和安全决策依据&#xff0c;类似监控系统&#xff0c;一般采用旁路部署的方式…

文件服务器实现方式汇总

hello&#xff0c;伙伴们&#xff0c;大家好&#xff0c;今天这一期shigen来给大家推荐几款可以一键实现文件浏览器的工具&#xff0c;让你轻松的实现文件服务器和内网的文件传输、预览。 基于node 本次推荐的是http-server&#xff0c; 它的githuab地址是&#xff1a;http-s…

8086汇编语言寄存器清零学习

mov ax, 0 这样应清零了&#xff1b; sub ax, ax 这样也清了&#xff1b; xor ax, ax 这样也清零了&#xff1b;自己跟自己异或&#xff0c;异或是同则结果为0、不同结果为1&#xff1b;自己和自己&#xff0c;每一位都是相同的&#xff0c;异或后结果为0&#xff1b; and …

基于CentOS7.9安装docker服务,配置镜像加速器

目录 一、安装docker服务 二、配置镜像加速器 三、下载系统镜像&#xff08;Ubuntu、 centos &#xff09; 四、基于下载的镜像创建两个容器&#xff08;容器名一个为自己名字全拼&#xff0c;一个为首名字字母 &#xff09; 五、容器的启动、 停止及重启操作 六、查看正…

基于Java+SpringBoot+vue前后端分离林业产品推荐系统设计实现

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

Spring之微服务架构与Spring Cloud

微服务架构与Spring Cloud 微服务架构与Spring Cloud 摘要引言词汇解释详细介绍微服务架构Spring Cloud核心组件示例代码&#xff1a;注释&#xff1a; 注意事项理解微服务架构的优势 详细介绍什么是微服务架构&#xff1f;微服务架构的优势1. 可扩展性&#xff08;Scalability…

Win7安装新版本anaconda出现Failed to extract packages解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

CAD泰森多边形框架3D插件

插件介绍 CAD泰森多边形框架3D插件可用于在AutoCAD软件内生成三维Voronoi框架结构实体模型&#xff0c;适用于多孔Voronoi科研论文渲染绘图、Voronoi框架有限元建模、Voronoi空间结构优化等方面的应用。 使用说明 插件可设置生成的几何尺寸、晶格尺寸及边框直径等信息。 插…

基于Java+SpringBoot+vue前后端分离华强北商城二手手机管理系统设计实现

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

让大数据平台数据安全可见-行云管家

数字化经济在快速发展&#xff0c;大数据时代已经到来&#xff0c;大数据已经成为企业和政府决策的重要依据。然而大数据行业快速发展所带来的一系列安全问题也继续解决&#xff0c;例如数据安全更难保障&#xff0c;例如认证体系不完善等等。为此行云管家推出了大数据平台数据…

开源跨境电商ERP实战经验分享,避免坑点

开源跨境电商ERP系统是当今电商行业的利器&#xff0c;许多企业已经意识到了它在运营管理中的重要性。在本文中&#xff0c;作为该领域的专家&#xff0c;我将分享一些实战经验&#xff0c;帮助您避免在使用开源跨境电商ERP过程中可能遇到的坑点和挑战。 解析开源跨境电商ERP的…

操作系统期末考试复习——简答题总结

最近考研在复习OS&#xff0c;顺便把大二期末考试的简答题整理了一下~ 1、操作系统的定义 “操作系统&#xff08;operating system&#xff0c;简称OS&#xff09;是管理计算机硬件与软件资源的计算机程序 2、操作系统的基本类型及特征 批处理操作系统、分时操作系统、实时…

gdb 条件断点

条件断点&#xff0c;顾名思义就是有条件才会触发的断点&#xff0c;一般设置此类断点形如&#xff1a;b xxx if xxx&#xff0c;如&#xff1a; 要触发此断点则需要 is_created 0。打完断点我们也可以用 info b 查看一下当前已经设置的断点信息&#xff0c;如&#xff1a; 断…

02-Numpy基础-ndarray

NumPy&#xff08;Numerical Python的简称&#xff09;是Python数值计算最重要的基础包。 NumPy的部分功能如下&#xff1a; ndarray&#xff0c;一个具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组。用于对整组数据进行快速运算的标准数学函数&#xff08;无需编…

EMC三大法宝之一:屏蔽

结论&#xff1a;解决EMC的三大法宝为&#xff1a;屏蔽、接地和滤波。 Part 1 屏蔽的原理 首先&#xff0c;我们要了解屏蔽的概念。 屏蔽就是用金属对两个空间区域进行隔离, 用以控制一个空间区域的电场&#xff64; 磁场和电磁波对另一个空间区域的影响&#xff0c;通常的…