枚举类与注解

news2024/12/23 13:07:48

文章目录

  • 一、枚举类的使用
    • 枚举类的理解
    • 枚举类的定义
    • Enum类的常用方法
    • Enum类的实现接口
  • 二、注解(Annotation)
    • 说明
    • 如何自定义注解
    • JDK提供的4种元注解
    • 通过反射获取注解信息(到反射再讲)
    • JDK8注解的新特性
  • 每日一考

一、枚举类的使用

枚举类的理解

1、类的对象只有有限个,确定的。称这个类为枚举类
2、当需要定义一组常量时,强烈建议用枚举类
3、如果枚举类中只有一个对象,则可以作为单例模式的实现方式

枚举类的定义

方式一、JDK5.0之前,自定义枚举类

1、声明对象的属性:private final 修饰
因为对象是常量,所以对象的属性最好也不要更改。
2、私有化构造器,并给对象赋值
因为前面定义了对象的属性,而且是final,所以需要给属性初始化值,但是如果使用默认初始化或代码块初始化,后面创建对象时,得到的对象的属性就只能是一样的。所以使用构造器初始化
3、提供多个枚举类对象,public static final修饰
因为这里是直接在类里创建对象,所以加上了static,又因为对象是一组常量,所以加上了final。
4、其他诉求(根据实际情况进行修改)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

方式二、JDK5.0,可以使用enum定义枚举类

1、提供多个枚举类对象,具体形式是将前面定义时重复的部分删除。并且,每个对象之间用“,”分隔,最后一个对象用分号结尾。

在这里插入图片描述
改成
在这里插入图片描述

(后面部分和前面介绍的内容一样)
2、私有化构造器,并给对象赋值
因为前面定义了对象的属性,而且是final,所以需要给属性初始化值,但是如果使用默认初始化或代码块初始化,后面创建对象时,得到的对象的属性就只能是一样的。所以使用构造器初始化
3、声明对象的属性:private final 修饰
因为对象是常量,所以对象的属性最好也不要更改。
4、其他诉求(根据实际情况进行修改)
【注意】默认不再提供toString,这时toString打印的是对象的名字。(此时继承的是java.lang.Enum类)

Enum类的常用方法

1、values( ):返回枚举类型的对象数组,可以方便遍历所有枚举值
在这里插入图片描述

2、values( String str):根据提供的str,返回枚举类中对象名是str的对象。如果没有名为str的枚举类对象,则报异常
3、toString( ):返回当前枚举类对象名称

Enum类的实现接口

1、情况一:实现接口,在enum中实现抽象方法
在这里插入图片描述
这种情况,每个枚举类对象调用时都会执行相同的的代码

2、情况二:让枚举类对象分别实现接口中的抽象方法
在这里插入图片描述
就是在定义枚举类对象时,让每个对象都重写一次方法,这样调用不同的对象的方法时,执行的代码不同

二、注解(Annotation)

说明

JDK5.0新增
示例一:生成文档相关注解
示例二:在编译时进行格式检查(JDK内置的三个基本注解)
@Override:限定重写父类方法,只能用于方法
@Deprecated:表示所修饰元素(类、方法等)已经过时,通常是因为所修饰的结构危险或有更好的选择
@SuppressWarnings:抑制编译器警告
示例三:跟踪代码依赖性,实现替代配置文件功能

如何自定义注解

1、注解声明为@interface
2、内部定义成员,通常使用value去表示
3、可以指定成员的默认值,使用default定义
4、如果自定义的注解没有成员,表明是一个标识作用
5、如果注解有成员,使用此注解时,需要指定成员的值
在这里插入图片描述
在这里插入图片描述
【注意】自定义注解必须配上注解的信息处理流程(使用反射)才有意义

JDK提供的4种元注解

修饰注解的注解
分别有:
Retention:指定所修饰的注解的生命周期:SOURCE、CLASS(默认)、RUNTIME。只有声明为RUNTIME的注解,才能通过反射获取
在这里插入图片描述

Target:用于指定被修饰的注解能修饰哪些程序元素
Documented:表示所修饰的注解在被javadov解析时,保留下来
Inherited:被它修饰的注解具有继承性

【自定义注解通常会知名两个元注解:Retention、Target】

通过反射获取注解信息(到反射再讲)

JDK8注解的新特性

1、可重复注解
①在MyAnnotation上声明@Repeatable(MyAnnotations.class)
②MyAnnotation的Rentention和Target等元注解要与MyAnnotations的相同
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

2、类型注解
在这里插入图片描述

每日一考

在这里插入图片描述
4.
throw:生成一个异常对象,手动抛出,出现在方法体内
throws:处理异常。声明在方法的声明处末尾
5.
同步监视器:俗称,锁。任意类的对象都可以当锁;多个线程必须公用同一把锁
共享数据:多个线程共同操作的数据。需要用同步机制将操作共享数据的代码包起来,不能包多,也不能包少

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

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

相关文章

Node.js教程笔记(二)模块化

学习目标 1、能够说出模块化的好处 2、能够知道CommonJS规定了哪些内容 3、能够说出NodeJS中模块的三大分类各是什么 4、能够使用npm管理包 5、能够了解什么是规范的包结构 6、能够了解模块的加载机制 目录 1、模块化的基本概念 2、NodeJS中模块的分类 3、npm与包 4…

Django项目使用wangeditor方法

一、环境: python: 3.8 Django :3.2.16 wangeditor: v4 (官方文档地址:wangEditor) JS文件下载:https://download.csdn.net/download/weixin_47401101/87379142 编译器&#xff1…

日志分析工具--花两天时间为自己开发个小工具值得吗?

这两天忙里偷闲整理开发了个小的日志分析工具,没错,是给自己使用的,工欲善其事必先利其器。 先说一下痛点, 1、经常会遇到需要在外网服务器上调试的情况,此时只能通过日志来调试信息。 2、当使用记事本打开日志文件后&…

windows驱动开发-WDF编程

文章目录前言WDF编程前的准备工作WDF编程创建驱动对象创建设备对象设备对象的回调函数链表操作驱动的测试代码前言 注:本文的完整代码见仓库 18-WDF-reflect 代码参考自:junjiexing/libredirect 我不是从事驱动开发的专业人员,打酱油需要用…

区块链Fabric-从入门到实战(二) Fabric环境搭建

Fabric ubuntu16虚拟机环境搭建Ubuntu16镜像ubuntu-16.04.3-server-amd64.iso (如有需要,私信我)修改软件源cd /etc/apt/sudo cp sources.list sources.list.baksudo gedit sources.listdeb-src http://mirror.neu.edu.cn/ubuntu/ xenial mai…

回望在CSDN的2022和展望全新的2023

前言时光如白驹过隙,这条消息提醒着我加入CSDN有一些日子了。4286天,只是一个普通的数字,却记录着与CSDN的每一天。过去太长,回望过去的2022,有很多的收获和成长。在C站结实了一些朋友,分享了自己在工作中的…

校园跑腿、校园脱单、代理、帮忙拿快递的微信小程序 基于SpringBoot、Mybatis-plus、mysql实现

一、文件夹说明 代码下载 地址:校园跑腿、校园脱单、代理、帮忙拿快递的微信小程序 server 后端项目 project: 项目 CBD: 校园跑腿服务(校园CBD中心) server-app: 小程序apiserver-pc: 小程序后台管理service-cgs-base-service:…

RK3399平台开发系列讲解(CPU篇)CPUFreq 中央处理器频率调节技术

🚀返回专栏总目录 文章目录 一、CPUFreq组成二、设备树配置沉淀、分享、成长,让自己和他人都能有所收获!😄 📢中央处理器频率调节(Central Processing Unit frequency,CPUFreq)技术可以降低ARM芯片的功耗,例如在系统对任务压力较小时,通过调整处理器工作频率与输入…

Javascript判断点是否在多边型内

射线法Ray-casting Algorithm算法检查点point是否在多边形里面。用法:insidePolygon([[x1,y1],[x2,y2],[x3,y3]...], [x , y])参数说明:polygon多边形坐标集合,格式为[[x1,y1],[x2,y2],[x3,y3]...]。point 测试点坐标, 格式为[x , y]。返回tr…

技术分享| 视频监控融合方案

视频监控系统在各行业应用广泛,从早期的只是简单的实现通过视频记录监控区域的情况,到现在的监控侦测、智能报警、融合通信等功能,视频监控的作用已经不是简单的记录,分布在各地的视频监控摄像头可以通过复杂的软件算法实现更多智…

数据分析的尽头不是可视化,而是行动!行动!行动!

Kyligence Zen 联动飞书,支持一键推送指标,在飞书就能追踪关键指标的最新动态;指标对齐目标,目标拆解为飞书任务,实现从指标洞察到行动的丝滑闭环! 指标是衡量目标的量化参数,也是企业将战略目标…

PC端网页特效:轮播图

轮播图 功能需求: 鼠标经过轮播图模块,左右按钮显示,离开隐藏左右按钮。点击右侧按钮一次,图片往左播放一张, 左侧按钮同理。图片播放的同时,下面小圆圈模块跟随一起变化。点击小圆圈,可以播放…

2023年系统集成项目管理工程师报考条件及时间安排

一、报考条件 二、考试时间安排 集成考试一年会考2次,上半年一次、下半年一次 考试内容: 三、考试知识点分布: 给出一点点中项备考攻略 中级我敢说是好考的,题目也不难,主要弄清楚47个过程的输入输出,还有…

Github每日精选(第87期):轻量级图表lightweight-charts

lightweight-charts TradingView 轻量级图表是最小和最快的金融 HTML5 图表之一。 如果您想在网页上将财务数据显示为交互式图表而不影响网页加载速度和性能,轻量级图表库是您的最佳选择。 如果您想用交互式图表替换静态图像图表,它是您的最佳选择。该…

2000亿补贴申请倒计时!维视智造院校实验室建设攻略来了(六)!

#千亿政策贴息助力院校设备升级#近期,关于高校教育信息化的利好政策密集出台。9月7日,国务院常务会议提出对高校、职业院校和实训基地等10大领域设备购置和更新改造新增贷款,实施阶段性鼓励政策,中央财政贴息2.5个百分点&#xff…

电脑重装系统后文件还能恢复吗?恢复文件的详细图文教程

电脑重装系统,简单来说就是重新安装电脑的操作系统。一般选择重新安装电脑的系统,无非是电脑蓝屏、系统运行速度慢、崩溃死机等问题。 很多人会有疑惑,电脑重装系统后文件还能恢复吗?重装系统会造成数据全部被清空的情况&#xf…

js性能优化小技巧(已更新)

1、if多条件判断如果if里面包含多个判断条件,可以把判断条件存到一个数组,然后在去这个数组中检索”输入的值“是否满足条件;function testIf(x) {// 冗余if (x a || x b || x c || x d) {console.log(x)}// 简洁if ([a, b, c, d].includ…

前端vue3+typescript搭建vite项目(初识vite+项目配置完善+屏幕适配)

一、文章引导 #mermaid-svg-zCCPryl8cvuE0QpI {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-zCCPryl8cvuE0QpI .error-icon{fill:#552222;}#mermaid-svg-zCCPryl8cvuE0QpI .error-text{fill:#552222;stroke:#55222…

MySQL (五)------多表查询练习

我们在开发中,根据不同的业务需求往往需要通过2张及以上的表中去查询需要的数据。所以我们有必要学习2张及以上的表的查询。其实不管是几张表的查询,都是有规律可循的。 1.1 准备数据 -- 部门表 CREATE TABLE dept (id INT PRIMARY KEY PRIMARY KEY, --…

Databend 开源周报 第 75 期

Databend 是一款强大的云数仓。专为弹性和高效设计。自由且开源。即刻体验云服务:https://app.databend.com 。 What’s New 探索 Databend 本周新进展,遇到更贴近你心意的 Databend 。 Features & Improvements ✨ Format 实现 JSON 输出格式 …