[Java基础揉碎]枚举

news2024/11/28 14:31:21

目录

先看一个需求

枚举介绍: 

 枚举实现的方式:

>自定义类实现枚举实例:

>使用enum关键字实现枚举 

​编辑

 enum关键字实现枚举注意事项

enum常用方法

 enum细节


先看一个需求

要求创建季节(Season)对象,请设计并完成。

// 传统的方法建造一个类:

class Season{

        private String name;

        private String desc://描述

        // 构造器

        //getXX

        //setXX

}

在使用的时候就能发现一个问题, 本来季节只有四个, 但是设计的这个类却可以随便的增加, 而且可以通过set去修改它的名字

 怎么解决? 可以通过枚举[枚: 一个一个 举: 例举, 即把具体的对象一个一个例举出来的类]

枚举介绍: 

1)枚举对应英文(enumeration,简写 enum)

2)枚举是一组常量的集合。

3)可以这里理解:枚举属于一种特殊的类,里面只包含一组有限的特定的对象象。 

 枚举实现的方式:

1)自定义类实现枚举

2)使用enum关键字实现枚举

>自定义类实现枚举实例:

1.将构造器直接私有化, 防止直接new

2.不需要提供setXxx方法,因为枚举对象值通常为只读, 防止属性被修改

3.对枚举对象象/属性使用 final + static共同修饰,实现底层优化, 可以直接访问

4.枚举对象名通常使用全部大写,常量的命名规范

5.枚举对象根据需要,也可以有多个属性

使用的时候: 

>使用enum关键字实现枚举 

1)使用 enum 替换class

2) 直接使用常量名(实参列表)替换new的固定对象 

 3)如果有多个常量, 将分号改为逗号

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

使用的时候

 enum关键字实现枚举注意事项

1.当我们使用enum 关键字开发一个枚举类时,默认会继承Enum类, 而且是个final类

反编译代码可以看到, 实际这个类被加了final 继承了Enum, 并且还有一些方法

2.传统的public static final Season2 SPRING = new Season2("春天",“温暖 ");简化成 SPRING("春天","温暖"),这里必须知道,它调用的是哪个构造器

3.如果使用无参构造器创建枚举对象,则实参列表和小括号都可以省略

4.当有多个枚举对象时,使用,间隔,最后有一个分号结尾

5.枚举对象必须放在枚举类的行首

enum常用方法

说明:使用关键字enum时,会隐式继承Enum类,这样我们就可以使用Enum 类相关的方法。

常用方法一览:

1. toString:Enum类已经重写过了,返回的是当前对象名,子类可以重写该方法,用于返回对象的属性信息

2. name:返回当前对象象名(常量名),子类中不能重写

3. ordinal: 返回当前对象的位置号,默认从0开始

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

5. valueOf: 将字符串转换成枚举对象,要求字符串必须为已有的常量名,否则报异常!

6. compareTo: 比较两个枚举常量,比较的就是位置号! 

 enum细节

1)使用enum关键字后,就不能再继承其它类了,因为enum会隐式继承Enum, 而Java是单继承机制。

2)枚举类和普通类一样,可以实现接口,如下形式。 enum 类名implements 接口1,接口2{}

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

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

相关文章

企业能耗数据分析有哪些优势?怎样进行分析?

随着互联网技术的发展,企业在运营中会出现大量的用能数据,但却做不了精准的用能数据分析,导致数据没有得到有效利用,以及产生能源浪费现象。 为什么企业用能分析总是难? 一、用能分析过程复杂 由于用能分析过于复杂…

websocketpp上手笔记-Windows安装

WebSocketpp是什么 最近手上有一个c项目,需要用websocket从服务器端收内容。于是网上找了圈,发现WebSocketpp库可以做websocket的客户端。 WebSocketpp也叫WebSocket,github地址是:https://github.com/zaphoyd/websocketpp&…

每天五分钟深度学习:神经网络和深度学习有什么样的关系?

本文重点 神经网络是一种模拟人脑神经元连接方式的计算模型,通过大量神经元之间的连接和权重调整,实现对输入数据的处理和分析。而深度学习则是神经网络的一种特殊形式,它通过构建深层次的神经网络结构,实现对复杂数据的深度学习…

商标名称的词性:因形近不良而驳回!

近期看到业内有许多因不良驳回的案例,有些是直接因为不良而驳回,普推知产老杨发现一个因形近而驳回的案例,2022年5月申请的“乡巴佬”通过初审下证了,2022年10月申请“乡巴饶”因形近“乡巴佬”不良而驳回,而且还做过驳…

打造安全医疗网络:三网整体规划与云数据中心构建策略

医院网络安全问题涉及到医院日常管理多个方面,一旦医院信息管理系统在正常运行过程中受到外部恶意攻击,或者出现意外中断等情况,都会造成海量医疗数据信息的丢失。由于医院信息管理系统中存储了大量患者个人信息和治疗方案信息等,…

Word、Excel、PPT文件转PDF文件(C#)

一、添加依赖 为wpf项目引用Microsoft.Office.Interop.Excel、Microsoft.Office.Interop.PowerPoint、Microsoft.Office.Interop.Word、Office,依赖文件已经打到源代码包里了。 二、先定义一些命名空间 using Word Microsoft.Office.Interop.Word;using Excel M…

Vue2.x安装Tinymce依赖冲突解决

Vue2.x安装Tinymce依赖冲突原因 使用vue整合tinymce富文本编辑器,安装依赖时报错 报错的原因是下载版本与vue的版本对不上vue2.x版本应该使用如下指定版本依赖更合适 npm install --save "tinymce/tinymce-vue^3.1"额外依赖为 npm install --save &quo…

ssm013小型企业办公自动化系统的设计和开发+vue

小型企业办公自动化系统的设计与实现 摘 要 互联网发展至今,无论是其理论还是技术都已经成熟,而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播,搭配信息管理工具可以很好地为人们提供服务。针对小型企业办公信息管理混乱&am…

流行的API架构学习

几种流行的API架构风格图 SOAP(Simple Object Access Protocol) 优点:SOAP 是一种基于 XML 的通信协议,具有良好的跨平台和跨语言支持。它提供了丰富的安全性和事务管理功能,并支持复杂的消息交换模式。 缺点&#xf…

远控桌面多任务并发文件保密传输

远程桌面文件传输是一个重要的功能,大多数远控都是用的桌面程序模式,利用系统自带复制粘贴拖拽文件拷贝功能,做一个ole调用对接,可以将很多控制权交给操作系统。 但我做的是浏览器版,浏览器是沙盒原理,为了…

mkcert生成ssl证书+nginx部署局域网内的https服务访问问题

文章目录 mkcert生成ssl证书nginx部署局域网内的https服务访问问题1、下载mkcert查看自己的电脑是arm还是amd架构 2、安装mkcert3、测试mkcert是否安装成功4、查看CA证书存放位置5、打开windows的证书控制台6、生成自签证书,可供局域网内使用其他主机访问以下是nginx部署https服…

代码随想录第27天 | 39. 组合总和、40.组合总和II、131.分割回文串

一、前言 今天的主题还是回溯算法&#xff0c;还是根据那个backtracking模板&#xff0c;但是今天会涉及到去重和一些小细节的问题。 二、组合总和 1、思路&#xff1a; 我一开始的想法就是在for循环转化为&#xff1a; for(int i 0; i < size; i) 但是这个是会陷入一…

【LDLTS】拉普拉斯深能级瞬态光谱

Laplace deep level transient spectroscopy&#xff08;拉普拉斯深能级瞬态光谱&#xff0c;简称LDLTS&#xff09;是一种用于分析和表征半导体材料中深层能级缺陷的技术。它是传统能级瞬态光谱&#xff08;DLTS&#xff09;方法的扩展和改进&#xff0c;特别适用于解决传统DL…

Kubernetes kafka系列 | Strimzi 部署kafka-bridge

Strimzi kafka集群部署直通车 一、kafka bridge 介绍 Kafka Bridge 是 Apache Kafka 生态系统中的一个工具或组件&#xff0c;用于实现 Kafka 与其他系统或协议之间的通信或集成。Kafka 本身是一个分布式事件流平台&#xff0c;广泛用于构建实时数据流水线和流式应用程序。然而…

【操作系统】想要更好的学习计算机,操作系统的知识必不可少!!!

操作系统的概念 导言一、日常生活中的操作系统二、计算机系统层次结构三、操作系统的定义3.1 控制和管理计算机资源3.2 组织、调度计算机的工作与资源的分配3.3 给用户和其他软件提供方便接口与环境3.4 总结 四、操作系统的目标和功能4.1 作为管理者4.1.1 处理机管理4.1.2 存储…

用kimichat批量识别出图片版PDF文件中的文字内容

图片版的PDF文件&#xff0c;怎么才能借助AI工具来提取其中全部的文字内容呢&#xff1f; 第一步&#xff1a;将PDF文件转换成图片格式 具体方法参见文章&#xff1a;《零代码编程&#xff1a;用kimichat将图片版PDF自动批量分割成多个图片》 第二步&#xff1a;识别图片中的…

Springboot之Actuator的渗透

1. env http://ip:8080/actuator/env GET 请求 /env 会直接泄露环境变量、内网地址、配置中的用户名等信息&#xff1b;当程序员的属性名命名不规范&#xff0c;例如 password 写成 psasword、pwd 时&#xff0c;会泄露密码明文&#xff1b; 2.heapdump Heapdump地址为http…

互联网轻量级框架整合之JavaEE基础II

编写本篇代码并实际执行之前请仔细阅读前一篇互联网轻量级框架整合之JavaEE基础I Servlet 在Servlet容器中&#xff0c;Servlet是最基础的组件&#xff0c;也可以把JSP当做Servlet&#xff0c;JSP的存在意义只在于方便编写动态页面&#xff0c;使Java语言能和HTML相互结合&…

深度学习-计算机视觉入门-part1

计算机视觉入门 文章目录 计算机视觉入门一、 从卷积到卷积神经网络1.图像的基本表示2. 卷积操作3.卷积遇见深度学习3.1 通过学习寻找卷积核3.2 参数共享&#xff1a;卷积带来参数量骤减3.3 稀疏交互&#xff1a;获取更深入的特征 二、手撕卷积代码三、经典CNN模型介绍四、CNN模…

爬取BOSS直聘招聘数据(详情页数据+__zp_stoken__逆向)

这里携带逆向方法进行请求 获得数据 需要逆向方法请私聊 , 下面部分只展示爬取思路 对网页进行分析抓包 设置参数 – 城市/薪资范围/职业 对网页进行请求获得数据集 利用xpath,soup等进行进行数据清洗 将数据一csv的格式保存