[Java基础揉碎]枚举

目录

先看一个需求

枚举介绍: 

 枚举实现的方式:

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

>使用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.mzph.cn/news/786687.shtml

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

相关文章

5.vector容器的使用

文章目录 vector容器1.构造函数代码工程运行结果 2.赋值代码工程运行结果 3.容量和大小代码工程运行结果 4.插入和删除代码工程运行结果 5.数据存取工程代码运行结果 6.互换容器代码工程运行结果 7.预留空间代码工程运行结果 vector容器 1.构造函数 /*1.默认构造-无参构造*/ …

第十三届蓝桥杯JavaA组省赛真题 - 求和

解题思路&#xff1a; 这&#xff0c;真的是&#xff0c;省赛真题吗... public class Main {public static void main(String[] args) {long res 0;for (int i 1; i < 20230408; i) {res i;}System.out.print(res);} }

C#学习笔记 面试提要

冒泡 for (int m 0; m < arr.Length; m) { for (int n 0; n < arr.Length - 1 - m; n) { if (arr[n] > arr[n1]) { int temp arr[n]; arr[n] arr[n 1]; arr[n1] temp; } } } 选择 for (int m 0; m < arr.Length; m) { int index 0; for (int n 1; n < …

SpringMVC上下文对象

SpringMVC上下文对象 在有些情况下&#xff0c;就算加了过滤器后我们现在还不能在 controller 层将 session 代码去掉&#xff01;因为在实际业务中对用户对象操作是非常常见的&#xff0c;而我们的业务代码一般都写在 Service 业务层&#xff0c;那么我们 Service 层想要操作…

hcip-datacom英文词汇积累简述1

路由策略: routing policy 节点 : node 使配对: if match 应用: apply 许可: permit 拒绝: deny 访问控制列表: access control list ( ACL) 区域: area 邻居: peer 查看OSPF路由表: display ospf routing 查看全局路由表: display ip routing 路由 ID : router-id 设置OSPF路由…

企业安全体系建设的实践指南:策略制定与实施细节

在网络安全行业&#xff0c;安全Web漏洞挖掘工程师已经层出不穷&#xff0c;然而拥有甲方安全建设经验的工程师相对较为稀缺。在企业招聘安全工程师时&#xff0c;除了对安全漏洞挖掘能力的重视&#xff0c;更加关注是否具备甲方安全体系建设方面的思维。 本次分享聚焦于甲方安…

78: 计算生日是星期几(python)

收藏 难度&#xff1a;简单 标签&#xff1a;卓越班选拔 题目描述 编写一个程序&#xff0c;只要输入年月日&#xff0c;就能回答那天是星期几。 能被4整除但不能被100整除的&#xff0c;或者能被400整除的是闰年。 1、已知公元1年1月1日是星期一 2、算法&#xff1a;如果输…

PyCharm中配置PyQt5并添加外部工具

Qt Designer、PyUIC和PyRcc是Qt框架下的三个重要工具&#xff0c;总的来说&#xff0c;这三个工具各司其职&#xff0c;相辅相成&#xff0c;能显著提升Qt开发的速度与效率。 Qt Designer&#xff1a;是一个用于创建图形用户界面的工具&#xff0c;可轻松构建复杂的用户界面。…

面试智力题

面试智力题 二进位bit1. 题目&#xff1a;一千杯水&#xff0c;一杯水有毒&#xff0c;怎么用10只老鼠&#xff0c;把这杯水找出来&#xff08;1&#xff09;解法1&#xff1a;常规法&#xff08;2&#xff09;bit法&#xff08;位数法&#xff09; (3) 时间法三级目录 二进位b…

pygame的搭建

pygame的介绍与环境搭建 Pygame模块 安装 WindowsR打开命令窗口&#xff0c;输入&#xff1a; pip install pygame 或者安装指定版本 pip install pygame 2.3.0常用模块 在Pygame框架中有很多模块&#xff0c;官方网址pygame news 。 其中最常用模块的具体说明如下表所示…

Java 操作 Hadoop 集群之 HDFS 的应用案例详解

Java 操作 Hadoop 注意:本文内容基于 Hadoop 集群搭建完成基础上: Linux 系统 CentOS7 上搭建 Hadoop HDFS集群详细步骤 本文的内容是基于下面前提: Hadoop 集群搭建完成并能正常启动和访问Idea 和 Maven 分别安装完成需要有 JavaSE 基础和熟悉操作hadoop 的 hdfs dfs 命令…

【C语言基础】:自定义类型(二) -->联合和枚举

文章目录 一、联合体1.1 联合体类型的声明1.2 联合体的特点1.3 相同成员的结构体和联合体对比1.4 联合体大小的计算1.5 联合体练习 二、枚举类型2.1 枚举类型的声明2.2 枚举的优点 书山有路勤为径&#xff0c;学海无涯苦作舟。 创作不易&#xff0c;宝子们&#xff01;如果这篇…

计算机网络: 点对点协议 PPP

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…

单片机简介(一)

51单片机 一台能够运行的计算机需要CPU做运算和控制&#xff0c;RAM做数据存储&#xff0c;ROM做程序存储&#xff0c;还有输入/输出设备&#xff08;串行口、并行输出口等&#xff09;&#xff0c;这些被分为若干块芯片&#xff0c;安装在主板&#xff08;印刷线路板&#xf…

websocketpp上手笔记-Windows安装

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

vuepress-theme-hope 添加谷歌统计代码

最近做了个网站,从 cloudflare 来看访问量,过去 30 天访问量竟然有 1.32k 给我整懵逼了,我寻思不应该呀,毕竟这个网站内容还在慢慢补充中,也没告诉别人,怎么就这么多访问?搜索了下, cloudflare 还会把爬虫的请求也就算进来,所以数据相对来说就不是很准确 想到了把 Google An…

【C/C++】C语言实现顺序表

C语言实现顺序表 简单描述代码运行结果 简单描述 用codeblocks编译通过 源码参考连接 https://gitee.com/IUuaena/data-structures-c.git 代码 common.h #ifndef COMMON_H_INCLUDED #define COMMON_H_INCLUDED#define LIST_INIT_CAPACITY 100 //!< 线性表初始化长度 #def…

每日三个JAVA经典面试题(三十二)

1.Mybatis映射文件中&#xff0c;如果A标签通过include引用了B标签的内容&#xff0c;请问&#xff0c;B标签能否定义在A标签的后面&#xff0c;还是说必须定义在A标签的前面&#xff1f; Mybatis的映射文件中&#xff0c;当一个标签&#xff08;如A标签&#xff09;通过<i…

spring boot admin服务端配置邮件通知、钉钉通知

根据下面的可选项配置邮件 表格 6. 邮件提醒配置的可选项 属性名说明面若防治 spring.boot.admin.notify.mail.enabled 开启邮件提醒 true spring.boot.admin.notify.mail.ignore-changes 要忽略的状态变化&#xff0c;使用逗号分割。格式是: "<from-status>:&l…

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

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