枚举类 (enum)

目录

一、为什么要有枚举类?

二、枚举的简介

三、自定义枚举类

四、使用enum关键字

五、注意事项 


一、为什么要有枚举类?

假如我们有这样的一个需求:设计季节类,并创建对象。

我们就需要以下操作,创建Season类,然后new创建对象。这样固然能满足需要,但是,一年只有四个季节,但是以下代码还可以创建对象,而且,下面对于季节和季节的描述,都可以修改。这样的代码还是欠妥。

public class SeasonTest {public static void main(String[] args) {Season season1 = new Season("春天", "温暖");Season season2 = new Season("夏天", "炎热");Season season3 = new Season("秋天", "凉爽");Season season4 = new Season("冬天", "寒冷");}
}class Season {private String name;private String desc;public Season(String name, String desc) {this.name = name;this.desc = desc;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getDesc() {return desc;}public void setDesc(String desc) {this.desc = desc;}
}

我们需要的对象,是有限的、只读的

二、枚举的简介

枚举对应英文enumeration,简写enum

枚举是一组常量集合,枚举是一种特殊的类,里面只包含了一组有限的特定的对象。

三、自定义枚举类

  1. 将构造器私有化,防止直接new
  2. 去掉setXXX方法,防止属性被修改
  3. 在Season内部,直接创建固定的对象
  4. 优化,可以加上final修饰符
public class SeasonTest {public static void main(String[] args) {System.out.println(Season.SPRING);System.out.println(Season.SUMMER);System.out.println(Season.AUTUMN);System.out.println(Season.WINTER);}
}class Season {private String name;private String desc;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("冬天", "寒冷");private Season(String name, String desc) {this.name = name;this.desc = desc;}public String getName() {return name;}public String getDesc() {return desc;}@Overridepublic String toString() {return "Season{" +"name='" + name + '\'' +", desc='" + desc + '\'' +'}';}
}

四、使用enum关键字

1.使用enum关键字替换class

2.

public static final Season SPRING = new Season("春天", "温暖");
替换成

SPRING("春天", "温暖");

3.如有多个对象,中间用,隔开

必须

4. 使用enum创建的常量对象要放在最前面;

必须在最前面

五、注意事项 

 

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

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

相关文章

基于vue的地图特效(飞线和标注)

这段代码的主要功能是在页面加载完成后,初始化一个 echarts 地图图表,并配置了相关的地理数据、散点数据、线条数据以及样式效果,最后在指定的 div 元素中进行展示。 需要再vue中的框架实现,不能单独直接运行。 标注 type: effe…

案例|180套设备24小时监测,守护某油气管线安全

油气管道跨越工程是我国重要的能源基础设施,也是油气上下游衔接协调发展的关键环节,还是我国现代能源体系和现代综合交通运输体系的重要组成部分。守护能源安全大动脉,筑牢油气管网基础设施安全具有重要意义。 一、项目背景 某油气管线是我国…

802.11漫游流程简单解析与笔记_Part2_05_wpa_supplicant如何通过nl80211控制内核开始关联

最近在进行和802.11漫游有关的工作,需要对wpa_supplicant认证流程和漫游过程有更多的了解,所以通过阅读论文等方式,记录整理漫游相关知识。Part1将记录802.11漫游的基本流程、802.11R的基本流程、与认证和漫游都有关的三层秘钥基础。Part1将包…

如何计算多路复用器的建立时间和采样速率

简介 计算开关或多路复用器建立时间的基本方法是计算器件的RC(即,Ron * Cd),并乘以所需系统精度的时间常数数量,再加上开关或多路复用器的开关定时Ton、Toff或Ttransition。 建立时间 开关定时 (Ron * CD * 时间常数数量) 其中&#xff1a…

Centos7 被停用!如何利用 Ora2Pg 将 Oracle 迁移至 IvorySQL?

在过去的社区讨论中,想要使用或正在使用IvorySQL的社区用户,经常问到Oracle 如何迁移到 IvorySQL 中,而且近期随着 Centos7 官方已经停止维护,这一变动促使了很多将 Oracle 部署在 Centos7 上的 Oracle 用户,开始准备 …

习题练习以

题意:求i&M的popcount的和,i属于0……N 主要思路还是变加为乘。 举个例子N22,即10110 假设M的第3位是1,分析N中: 00110 00111 00100 00101 发现其实等价于 0010 0011 0000 0001 也就是左边第4位和第5…

qt 用数据画一个图,并表示出来

1.概要 想用数据绘制一个画面,看有相机到播放的本质是啥。 要点 // 创建一个QImage对象,指定图像的宽度、高度和格式 QImage image(width, height, QImage::Format_Grayscale8); // 将像素数据复制到QImage对象中 memcpy(image.bits(), pixelD…

项目进度计划、软件部署、调试方案

项目进度计划 项目计划工期:合计3000日历天完成整体项目交付。 软件部署 办公管理系统是一项复杂、长期的系统工程,为保证业务系统能够顺利地进行实施,必须要制定科学、合理、切实可行的实施计划。一方面要从组织上进行落实,成立强有力的项目领导小组和经验丰富的项目实…

实用教程:用 Go 的 net/textproto 包优化文本协议处理

实用教程:用 Go 的 net/textproto 包优化文本协议处理 介绍准备工作环境设置Go 基础回顾 基础使用创建连接发送请求接收响应 高级特性处理 MIME 头多行响应的管理错误处理与调试 实战案例实现一个简单的邮件客户端实现一个基于 net/textproto 的命令行工具 最佳实践…

【微服务】Spring Cloud中如何使用Eureka

文章目录 强烈推荐引言主要功能Eureka 的架构使用示例Eureka Server 配置Eureka Client 配置示例服务服务发现调用示例 Spring Cloud如何实现服务的注册?1. 搭建 Eureka 服务注册中心2. 配置服务注册到 Eureka3. 验证服务注册 总结应用场景1. 动态服务发现2. 负载均衡3. 服务治…

开启新纪元!被AI驱动的游戏世界,提升游戏体验

随着人工智能的高速发展,人工智能逐渐应用到了生活中的方方面面,人工智能在游戏中也有诸多应用,在游戏里领域扮演了相当重要的角色。游戏AI是伴随着电子游戏而出现的,在早期的游戏中就出现了对抗类AI角色,后来逐渐出现…

接口基础知识1:认识接口

课程大纲 一、定义 接口:外部与系统之间、内部各子系统之间的交互点。 比如日常使用的电脑,有电源接口、usb接口、耳机接口、显示器接口等,分别可以实现:与外部的充电、文件数据传输、声音输入输出、图像输入输出等功能。 接口的本…

【HBZ分享】TCP连接完成后又是如何保证数据的可靠性传输

前提 发送发发送数据时,需要给出一个seq编号。第一个数据包的seq编号是一个随机数, 从第二个开始,seq编号就是【第一次的seq数据包大小】, 即接收方响应过来的期待数据包编号 ACK机制 接收方收到数据后,要给发送方回…

阐述 C 语言中的参数传递机制

🍅关注博主🎗️ 带你畅游技术世界,不错过每一次成长机会! 📙C 语言百万年薪修炼课程 通俗易懂,深入浅出,匠心打磨,死磕细节,6年迭代,看过的人都说好。 文章目…

PolSARPro软件安装处理Sentinel1A数据(CSDN_20240707)

PolSARpro是由法国雷恩第一大学(Universit de Rennes 1)电子和电信学院教授Eric Pottier1等人带头开发的专门用于PolSAR(极化合成孔径雷达)、Pol-InSAR(极化干涉合成孔径雷达)、Pol-TomoSAR(极化层析合成孔径雷达&…

如何在 ASP.NET MVC 项目中使用身份验证器应用程序实现多因素身份验证?

介绍 增强安全性对于任何应用程序都至关重要,而多因素身份验证 (MFA) 是实现此目标的有效方法。在本文中,我们将介绍在 ASP.NET MVC 项目中使用身份验证器应用程序集成 MFA 的过程。无论您是从头开始还是将 MFA 添加到现有项目,本指南都将提…

谷粒商城学习笔记-23-分布式组件-SpringCloud Alibaba-Nacos配置中心-简单示例

之前已经学习了使用Nacos作为注册中心,这一节学习Nacos另外一个核心功能:配置中心。 一,Nacos配置中心简介 Nacos是一个易于使用的平台,用于动态服务发现和配置管理。作为配置中心,Nacos提供了以下核心功能和优势&am…

高盛开源的量化金融 Python 库

GS Quant GS Quant是用于量化金融的Python工具包,建立在世界上最强大的风险转移平台之一之上。旨在加速量化交易策略和风险管理解决方案的开发,凭借25年的全球市场经验精心打造。 它由高盛的定量开发人员(定量)创建和维护&#…

TCP Analysis Flags 之 TCP Previous segment not captured

前言 默认情况下,Wireshark 的 TCP 解析器会跟踪每个 TCP 会话的状态,并在检测到问题或潜在问题时提供额外的信息。在第一次打开捕获文件时,会对每个 TCP 数据包进行一次分析,数据包按照它们在数据包列表中出现的顺序进行处理。可…

从零开始学习嵌入式----Linux系统命令集合与shell脚本

Shell是一门编程语言,作为学习shell的开始,需要事先搞明白:编程的目的是什么?什么是编程语言?什么是编程? shell本身就是一门解释型、弱类型、动态语言,与python相对应,Python属于解…