当前位置: 首页 > news >正文

【JAVA学习笔记】43 - 枚举类

项目代码

https://github.com/yinhai1114/Java_Learning_Code/tree/main/IDEA_Chapter11/src/com/yinhai/enum_

〇、创建时自动填入版权 作者等信息

 如何在每个文件创建的时候打入自己的信息以及版权呢

菜单栏-File-setting-Editor-File and Code Templaters -Includes-输入信息 如下图

一、引出

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

/*** @author 银海* @version 1.0*/
public class Enumeration01 {public static void main(String[] args) {Season season = new Season("spring", "worm");Season season1 = new Season("winter", "cold");Season season2 = new Season("summer", "hot");Season season3 = new Season("autumn", "cold");//对于季节而言,是固定的四个 不会有更多//因此这样设计不好,所以引出枚举类,把对象一个个列举出来Season other = new Season("asdasdas", "~~~~~~~~~");}
}
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;}
}

二、两种实现方式

1.自定义类实现枚举

        1)不需要提供setXxx方法,因为枚举对象值通常为只读.

        2)对枚举对象/属性使用final + static 共同修饰,实现底层优化.

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

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

public class Enumeration02 {public static void main(String[] args) {System.out.println(Season.AUTUMN);System.out.println(Season.SPRING);System.out.println(Season.SUMMER);System.out.println(Season.WINTER);}
}class Season {private String name;private String desc;//3.在Season内部直接创建对象,加上public static//4.优化可以加入final修饰符public final static Season SPRING = new Season("春天", "暖");public final static Season WINTER = new Season("冬天", "寒冷");public final static Season AUTUMN = new Season("秋天", "冷");public final static Season SUMMER = new Season("夏天", "热");//1.私有化构造器public Season(String name, String desc) {this.name = name;this.desc = desc;}//2.去掉set方法 防止被修改public String getName() {return name;}public String getDesc() {return desc;}}

小结:进行自定义类实现枚举有如下特点

        1)构造器私有化

        2)本类内部创建一组对象

        3)对外暴露对象(通过为对象添加public final static修饰符)

        4)可以提供get方法,但是不要提供set

2.enum关键字实现枚举(引出)

public class Enumeration03 {public static void main(String[] args) {System.out.println(Season.AUTUMN);System.out.println(Season.SPRING);System.out.println(Season.SUMMER);System.out.println(Season.WINTER);}}
enum Season {//1.使用enum代替class//2.//常量名(实参列表);//3.如果有多个常量(对象)SPRING("春天", "暖"),WINTER("冬天", "寒冷"),AUTUMN("秋天", "冷"),SUMMER("夏天", "热");//等价于自定义的public final static Season SPRING = new Season("春天", "暖");//4.如果使用enum来实现枚举,要求将常量对象写在前面private String name;private String desc;private Season(String name, String desc) {this.name = name;this.desc = desc;}public String getName() {return name;}public String getDesc() {return desc;}}

三、enum实现枚举注意事项和细节

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

        使用javap反编译

                

        如何使用javap反编译呢,定位class文件,使用cmd,输入javap 想要反编译的文件.class

2.调用的构造器

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

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

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

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

四、课堂练习

                

正确 调用的是Gender 的无参构造器,没有写构造器也隐含在类内

        ​​​​​​​        

会继承父类Enum,本类是没有toString的所以要找父类有没有toString

        ​​​​​​​        ​​​​​​​

有,名字就是BOY(有个疑问,开一章节再看看),输出true

相关文章:

【JAVA学习笔记】43 - 枚举类

项目代码 https://github.com/yinhai1114/Java_Learning_Code/tree/main/IDEA_Chapter11/src/com/yinhai/enum_ 〇、创建时自动填入版权 作者等信息 如何在每个文件创建的时候打入自己的信息以及版权呢 菜单栏-File-setting-Editor-File and Code Templaters -Includes-输入信…...

Springcloud介绍

1.基本介绍 Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。Spring …...

LK光流法和LK金字塔光流法(含python和c++代码示例)

0 引言 本文主要记录LK光流算法及LK金字塔光流算法的详细原理,最后还调用OpenCV中的cv2.calcOpticalFlowPyrLK()函数实现LK金字塔光流算法,其中第3部分是python语言实现版本,第4部分是c++语言实现版本。 1 LK光流算法 1.1 简述 LK光流法是一种计算图像序列中物体运动的光…...

数据库索引是什么?创建索引的注意事项

数据库索引: 索引(index)是帮助MySQL高效获取数据的数据结构(有效),在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向&#x…...

java中的异常,以及出现异常后的处理【try,catch,finally】

一、异常概念 异常 :指的是程序在执行过程中,出现的非正常的情况,最终会导致JVM的非正常停止。 注意: 在Java等面向对象的编程语言中,异常本身是一个类,产生异常就是创建异常对象并抛出了一个异常对象。Java处理异常的…...

前端构建但没有更新

使用jenkins构建vue前端代码时,构建完成后,jenkins提示构建成功, 但前端刷新提示还是原来的效果,此时需要查看下jenkins构建日志,如果出现下面的文字,说明缺少依赖,最新的代码并没有构建到项目中…...

【Opencv】OpenCV使用CMake和MinGW的编译安装出错解决

编译时出现的错误: mingw32-make[1]: *** [modules/core/CMakeFiles/opencv_core.dir/all] Error 2 Makefile:161: recipe for target ‘all’ failed mingw32-make: *** [all] Error 2解决方法: 根据贴吧老哥的解答,发现是mingw版本有问题导…...

#Day Day Plan# 《NCB_PCI_Express_Base 5.0.1.0》pdf 译文笔记 模版

目录 一 本章节主讲知识点 1.1 xxx 1.2 sss 1.3 ddd 二 本章节原文翻译 2.1 ddd 三 本章节关联知识点 2.1 ddd 四 本章节存疑问题 2.1 222 五 总结 一 本章节主讲知识点 1.1 xxx 1.2 sss 1.3 ddd 二 本章节原文翻译 2.1 ddd 三 本章节关联知识点 2.1 ddd 四…...

分代ZGC详解

ZGC(Z Garbage Collector)是Java平台上的一种垃圾收集器,它是由Oracle开发的,旨在解决大堆的低延迟垃圾收集问题。ZGC是一种并发的分代垃圾收集器,它主要针对具有大内存需求和低停顿时间要求的应用程序 分代ZGC收集器…...

vue图片懒加载

Vue图片懒加载是一种优化页面性能的技术,它可以延迟加载页面上的图片,直到它们进入可见区域。这可以减少页面的加载时间,提高用户体验。 在Vue中实现图片懒加载可以使用第三方库vue-lazyload。首先需要安装该库: npm install vu…...

【c++】运算符重载实例

重载自增自减运算符 Intger num(2); num; num;对自增运算符的重载要区分前置和后置。在重载之前需要思考一个问题,num是返回一个临时变量还是num对象的本体。 为了解决这个问题可以考虑实现一个Inc_()函数和_Inc()函数分别模仿后置和前置的行为 Integer Inc_(){i…...

用*画田字形状,numpy和字符串格式化都可以胜任

numpy的字符型元素矩阵,可以方便画;直接python字符串手撕,也可以轻巧完成。 (本笔记适合熟悉循环和列表的 coder 翻阅) 【学习的细节是欢悦的历程】 Python 官网:https://www.python.org/ Free:大咖免费“圣经”教程《…...

搭建一个windows的DevOps环境记录

边搭建边记录,整个DevOps环境的搭建可能会很久。。。 一、安装Jenkins: 参考:Jenkins基础篇--windows安装Jenkins-CSDN博客 注意上面选择JDK的路径,选择到安装目录,该目录并不一定要在path中配置了(就是…...

漏洞扫描系统的主要功能有哪些

漏洞扫描系统是一种自动化的工具,用于发现和报告计算机网络系统中的安全漏洞。这些漏洞可能包括软件漏洞、配置错误、不安全的网络设备等。漏洞扫描系统的主要功能包括以下几个方面: 目标识别:漏洞扫描系统首先需要识别目标系统的基本信息&am…...

Spring Boot配置多个Kafka数据源

一、配置文件 application.properties配置文件如下 #kafka多数据源配置 #kafka数据源一,日志审计推送 spring.kafka.one.bootstrap-servers172.19.12.109:32182 spring.kafka.one.producer.retries0 spring.kafka.one.producer.properties.max.block.ms5000 #kafk…...

Learning Open-World Object Proposals without Learning to Classify(论文解析)

Learning Open-World Object Proposals without Learning to Classify 摘要1 介绍2 相关工作3 方法3.1 基线3.2 基于纯定位的对象性3.3. 对象定位网络 (OLN)4 实验4.1跨类泛化4.2.开放世界类不可知检测4.3更多的跨数据集泛化4.3.1 Objects365 泛化4.3.2 EpicKitchens 的泛化4.4…...

前端在项目中添加自己的功能页面

1.src—>mock–>sideMenue:边表(sidemenue)的子功能的添加:左边功能框中的显示 在相应的父功能添加子功能 id号不能和他人的一样,casecode:就是路由名字 title:中文名称 2.前后端接口(后端程序员给),定义好接口名称 src—>moudles—…...

数据库MySQL(二):DDL数据定义语言

数据定义语言(Data Definition Language,DDL) 该语言主要用于定义数据库对象,操作对象为数据库、表或字段。 数据库操作 # 查询所有数据库 SHOW DATABASES;# 查询当前数据库 SELECT DATABASE(); # 创建数据库 CREATE DATABASE […...

Spring FactoryBean 源码讲解

Spring FactoryBean 源码讲解 什么是Spring FactoryBean Spring FactoryBean是一个特殊的Bean,它实现了FactoryBean接口并重写了其getObject()方法,用于生产其他Bean的实例。在Spring容器启动时,会自动调用FactoryBean的getObject()方法来获…...

【C语言】零碎知识点|细节

除法运算符(/)的使用规则 在C语言中,除法运算符(/)的使用规则如下: 当两个整数相除时,结果也是一个整数。例如,如果A和B都是整数,那么A / B的结果也是一个整数。这意味着,除法运算的结果会忽略小数部分。例如,10 / 3 的结果是3,而不是3.3333。 当一个整数和一个浮点…...

Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例

使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件,常用于在两个集合之间进行数据转移,如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model:绑定右侧列表的值&…...

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用

1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...

佰力博科技与您探讨热释电测量的几种方法

热释电的测量主要涉及热释电系数的测定,这是表征热释电材料性能的重要参数。热释电系数的测量方法主要包括静态法、动态法和积分电荷法。其中,积分电荷法最为常用,其原理是通过测量在电容器上积累的热释电电荷,从而确定热释电系数…...

莫兰迪高级灰总结计划简约商务通用PPT模版

莫兰迪高级灰总结计划简约商务通用PPT模版,莫兰迪调色板清新简约工作汇报PPT模版,莫兰迪时尚风极简设计PPT模版,大学生毕业论文答辩PPT模版,莫兰迪配色总结计划简约商务通用PPT模版,莫兰迪商务汇报PPT模版,…...

JS手写代码篇----使用Promise封装AJAX请求

15、使用Promise封装AJAX请求 promise就有reject和resolve了,就不必写成功和失败的回调函数了 const BASEURL ./手写ajax/test.jsonfunction promiseAjax() {return new Promise((resolve, reject) > {const xhr new XMLHttpRequest();xhr.open("get&quo…...

WebRTC从入门到实践 - 零基础教程

WebRTC从入门到实践 - 零基础教程 目录 WebRTC简介 基础概念 工作原理 开发环境搭建 基础实践 三个实战案例 常见问题解答 1. WebRTC简介 1.1 什么是WebRTC? WebRTC(Web Real-Time Communication)是一个支持网页浏览器进行实时语音…...

【Elasticsearch】Elasticsearch 在大数据生态圈的地位 实践经验

Elasticsearch 在大数据生态圈的地位 & 实践经验 1.Elasticsearch 的优势1.1 Elasticsearch 解决的核心问题1.1.1 传统方案的短板1.1.2 Elasticsearch 的解决方案 1.2 与大数据组件的对比优势1.3 关键优势技术支撑1.4 Elasticsearch 的竞品1.4.1 全文搜索领域1.4.2 日志分析…...

篇章二 论坛系统——系统设计

目录 2.系统设计 2.1 技术选型 2.2 设计数据库结构 2.2.1 数据库实体 1. 数据库设计 1.1 数据库名: forum db 1.2 表的设计 1.3 编写SQL 2.系统设计 2.1 技术选型 2.2 设计数据库结构 2.2.1 数据库实体 通过需求分析获得概念类并结合业务实现过程中的技术需要&#x…...

Mysql故障排插与环境优化

前置知识点 最上层是一些客户端和连接服务,包含本 sock 通信和大多数jiyukehuduan/服务端工具实现的TCP/IP通信。主要完成一些简介处理、授权认证、及相关的安全方案等。在该层上引入了线程池的概念,为通过安全认证接入的客户端提供线程。同样在该层上可…...