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

第十章:枚举类与注解

10.1:枚举类的使用

        当需要定义一组常量时,建议使用枚举类(前提:类的对象只有有限个,确定的)

                eg:

                        星期:Mondey、.....、Sunday

                        性别:Man、.....、Woman

                        线程状态:创建、就绪、运行、阻塞、死亡

package com.jiayifeng.java;/*** author 爱编程的小贾* create 2023-09-17 18:25** 一:枚举类的使用*      1.理解:类的对象只有有限个,确定的,我们称此类为枚举类*      2.如果枚举类中只有一个对象,则可以作为单列设计模式的实现方法** 二:如何定义枚举类?*      1.方式一:jdk5.0之前,自定义枚举类*      2.方式二:jdk5.0,可以使用enum关键字定义枚举类** 三:Enum类中常用的方法:*      values()方法:返回枚举类的对象数组,该方法可以很方便的遍历所有的枚举值*      valueOf(String str)方法:可以把一个字符串转换为对应的枚举类对象。*      toString():返回当前枚举类对象常量的名称** 四:使用enum关键字定义的枚举类实现接口的情况*      情况一:实现接口,在enum类中实现抽象方法*      情况二:让枚举类的对象分别实现接口中的抽象方法*/
public class SeasonTest {public static void main(String[] args) {Season spring = Season.SPRING;
//        toString()System.out.println(spring);//Season{seasonName='春天', seasonDesc='春暖花开'}}
}//自定义枚举类
class Season{
//   1.声明对象的属性:private final修饰private final String seasonName;private final String seasonDesc;//    2.私有化类的构造器,并给对象属性进行赋值(初始化)private Season(String seasonName,String seasonDesc){this.seasonName = seasonName;this.seasonDesc = seasonDesc;}//    3.提供当前枚举类的多个对象:public static finalpublic 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("冬天","冰天雪地");//    4.其它诉求1:获取枚举类对象的属性public String getSeasonName() {return seasonName;}public String getSeasonDesc() {return seasonDesc;}//    5.其它诉求2:提供toString()@Overridepublic String toString() {return "Season{" +"seasonName='" + seasonName + '\'' +", seasonDesc='" + seasonDesc + '\'' +'}';}
}
package com.jiayifeng.java;/*** author 爱编程的小贾* create 2023-09-18 8:14** 一:使用enum关键字定义枚举类*      1.说明:定义的枚举类默认继承java.lang.Enum类*/
public class SeasonTest2 {public static void main(String[] args) {Season1 spring = Season1.SPRING;
//        toString()System.out.println(spring);//Season1{seasonName='春天', seasonDesc='春暖花开'}System.out.println(Season1.class.getSuperclass());//class java.lang.Enum
//        values()Season1[] values = Season1.values();for(int i = 0;i < values.length;i++) {System.out.println(values[i]);values[i].show();}/*Season1{seasonName='春天', seasonDesc='春暖花开'}春天在哪里?Season1{seasonName='夏天', seasonDesc='夏日炎炎'}夏天在哪里?Season1{seasonName='秋天', seasonDesc='秋高气爽'}秋天在哪里?Season1{seasonName='冬天', seasonDesc='冰天雪地'}冬天在哪里?*/System.out.println("***************************");Thread.State[] values1 = Thread.State.values();for(int i = 0;i < values.length;i++){System.out.println(values1[i]);/*NEWRUNNABLEBLOCKEDWAITING*/System.out.println("************************");
//            valueOf(String objName):返回枚举类中对象名是objName的对象
//            如果没有objName的枚举类对象,则抛异常:IllegalArgumentExceptionSeason1 winter = Season1.valueOf("WINTER");System.out.println(winter);//Season1{seasonName='冬天', seasonDesc='冰天雪地'}
//            winter.show();//这是一个季节}}
}interface Info{void show();
}
//使用enum关键字定义枚举类
enum Season1 implements Info{//   1.提供当前枚举类的对象,多个对象之间用","隔开,末尾对象用";"结束SPRING("春天","春暖花开"){public void show(){System.out.println("春天在哪里?");}},SUMMER("夏天","夏日炎炎"){public void show(){System.out.println("夏天在哪里?");}},AUTUMN("秋天","秋高气爽"){public void show(){System.out.println("秋天在哪里?");}},WINTER("冬天","冰天雪地"){public void show(){System.out.println("冬天在哪里?");}};//   2.声明对象的属性:private final修饰private final String seasonName;private final String seasonDesc;//   3.私有化类的构造器,并给对象属性进行赋值(初始化)private Season1(String seasonName,String seasonDesc){this.seasonName = seasonName;this.seasonDesc = seasonDesc;}//   4.其它诉求1:获取枚举类对象的属性public String getSeasonName() {return seasonName;}public String getSeasonDesc() {return seasonDesc;}//   5.其它诉求2:提供toString()@Overridepublic String toString() {return "Season1{" +"seasonName='" + seasonName + '\'' +", seasonDesc='" + seasonDesc + '\'' +'}';}//    @Override
//    public void show() {
//        System.out.println("这是一个季节");
//    }
}

10.2:注解的使用(Annotation)

        10.2.1:注解概述

                从JDK 5.0开始,Java增加了对元数据(MetaData)的支持,也就是Annotation

                Annotation其实就是代码里的特殊标记,这些标记可以在编译,类加载,运行时被读取,并执行相应的处理。通过使用Annotation,程序员可以在不改变原有逻辑的情况下,在源文件中嵌入一些补充信息。代码分析工具、开发工具和部署工具可以通过这些补充信息进行验证或者进行部署

                Annotation可以像修饰符一样被使用,可用于修饰包、类、构造器、方法、成员变量、参数、局部变量的声明,这些信息被保存在Annotation的“name =  value”中

                可以说:框架 = 注解 + 反射 + 设计模式

        10.2.2:注解的用法

                

                

相关文章:

第十章:枚举类与注解

10.1&#xff1a;枚举类的使用 当需要定义一组常量时&#xff0c;建议使用枚举类&#xff08;前提&#xff1a;类的对象只有有限个&#xff0c;确定的&#xff09; eg&#xff1a; 星期&#xff1a;Mondey、.....、Sunday 性别&#xff1a;Man、.....、Woman 线程状态&#xff…...

ChatGPT:字符串操作问题——提取包含括号的字符串中的题干内容

ChatGPT&#xff1a;字符串操作问题——提取包含括号的字符串中的题干内容 String title p.text().split(“(”)[0];为什么会报错 ChatGPT&#xff1a; 在这段代码中&#xff0c;您正在使用Java处理一个字符串&#xff08;假设是HTML或文本&#xff09;&#xff0c;尝试将其分…...

jvm中对象创建、内存布局以及访问定位

对象创建 Java语言层面&#xff0c;创建对象通常&#xff08;例外&#xff1a;复制、反序列化&#xff09;仅仅是一个new关键字即可&#xff0c;而在虚拟机中&#xff0c;对象&#xff08;限于普通Java对象&#xff0c;不包括数组和Class对象等&#xff09;的创建又是怎样一个过…...

C基础-操作符详解

操作符分类&#xff1a; 算数操作符&#xff1a; - * / % //算数操作符 // int main() // { // // /除法 1.整数除法(除号两端都是整数) 2浮点数除法&#xff0c;除号的两端只要有一个小数就执行小数除法 // // 除法中&#xff0c;除数为0 // int a 7 / 2; /…...

时序预测 | MATLAB实现BO-BiGRU贝叶斯优化双向门控循环单元时间序列预测

时序预测 | MATLAB实现BO-BiGRU贝叶斯优化双向门控循环单元时间序列预测 目录 时序预测 | MATLAB实现BO-BiGRU贝叶斯优化双向门控循环单元时间序列预测效果一览基本介绍模型搭建程序设计参考资料 效果一览 基本介绍 MATLAB实现BO-BiGRU贝叶斯优化双向门控循环单元时间序列预测。…...

【深度学习实验】线性模型(五):使用Pytorch实现线性模型:基于鸢尾花数据集,对模型进行评估(使用随机梯度下降优化器)

目录 一、实验介绍 二、实验环境 1. 配置虚拟环境 2. 库版本介绍 三、实验内容 0. 导入库 1. 线性模型linear_model 2. 损失函数loss_function 3. 鸢尾花数据预处理 4. 初始化权重和偏置 5. 优化器 6. 迭代 7. 测试集预测 8. 实验结果评估 9. 完整代码 一、实验介…...

ADB底层原理

介绍 adb的全称为Android Debug Bridge&#xff0c;就是起到调试桥的作用。通过adb我们可以在Eclipse/Android Studio中方便通过DDMS来调试Android程序&#xff0c;说白了就是debug工具。adb是android sdk里的一个工具, 用这个工具可以直接操作管理android模拟器或者真实的and…...

etcd之读性能主要影响因素

1、Raft模块-线性读ReadIndex-节点之间的RTT延时、磁盘IO 线性读时Follower节点首先会向Raft 模块发送ReadIndex请求&#xff0c;此时Raft模块会先向各节点发送心跳确认&#xff0c;一半以上节点确认 Leader 身份后由leader节点将已提交日志索引 (committed index) 封装成 Rea…...

【Stable Diffusion】安装 Comfyui 之 window版

序言 由于stable diffusion web ui无法做到对流程进行控制&#xff0c;只是点击个生成按钮后&#xff0c;一切都交给AI来处理。但是用于生产生活是需要精细化对各个流程都要进行控制的。 故也就有个今天的猪脚&#xff1a;Comfyui 步骤 下载comfyui项目配置大模型和vae下载…...

Ansys Zemax | 如何建立二向分色分光镜

分光镜(Beam splitter)可被运用在许多不同的场合。一般而言&#xff0c;入射光抵达二向分色分光镜(dichroic beam splitter)时&#xff0c;会根据波长的差异产生穿透或反射的现象。这篇文章将说明如何在OpticStudio的非序列模式(non-sequential mode)中建立二向分色分光镜&…...

Mybatis学习笔记8 查询返回专题

1.返回实体类 2.返回List<实体类> 3.返回Map 4.返回List<Map> 5.返回Map<String,Map> 6.resultMap结果集映射 7.返回总记录条数 新建模块 依赖 目录结构 1.返回实体类 如果返回多条,用单个实体接收会出异常 2.返回List<实体类> 即使返回一条记…...

【测试开发】基础篇 · 专业术语 · 软件测试生命周期 · bug的描述 · bug的级别 · bug的生命周期 · 处理争执

【测试开发】基础篇 文章目录 【测试开发】基础篇1. 软件测试生命周期1.1 软件生命周期1.2 软件测试生命周期 2. 描述bug3. 如何定义bug的级别3.1 为什么要对bug进行级别划分3.2 bug的一些常见级别 4. bug的生命周期5. 产生争执这么怎么办&#xff08;处理人际关系&#xff09;…...

​bing许少辉乡村振兴战略下传统村落文化旅游设计images

​bing许少辉乡村振兴战略下传统村落文化旅游设计images...

第三十一章 Classes - 继承规则

第三十一章 Classes - 继承规则 继承规则 与其他基于类的语言一样&#xff0c;可以通过继承组合多个类定义。 类定义可以扩展&#xff08;或继承&#xff09;多个其他类。这些类又可以扩展其他类。 请注意&#xff0c;类不能继承 Python 中定义的类&#xff08;即 .py 文件中…...

华为云HECS安装docker并安装mysql

1、运行安装指令 yum install docker都选择y&#xff0c;直到安装成功 2、查看是否安装成功 运行版本查看指令&#xff0c;显示docker版本&#xff0c;证明安装成功 docker --version 3、启用并运行docker 3.1启用docker指令 systemctl enable docker 3.2 运行docker指令…...

MQ - 04 基础篇_存储_消息数据和元数据的存储设计

文章目录 导图概述元数据信息的存储消息数据的存储数据存储结构设计思路一 (Kafka的方案)思路二 (RocketMQ、RabbitMQ 和 Pulsar 的底层存储 BookKeeper 采用的方案)消息数据的分段实现根据偏移量定位根据索引定位 (RabbitMQ 和 RocketMQ的思路)使用场景消息数据存储格式…...

JavaScript:隐式转换、显示转换、隐式操作、显示操作

一、理解js隐式转换 JavaScript 中的隐式转换是指不需要显式地调用转换函数&#xff0c;而是在执行期间自动发生的数据类型的转换。即在使用不同类型的值进行操作时&#xff0c;JavaScript会自动进行类型转换。这种转换通常发生在不同数据类型之间进行运算或比较时。 序号分类…...

2023全新TwoNav开源网址导航系统源码 | 去授权版

2023全新TwoNav开源网址导航系统源码 已过授权 所有功能可用 测试环境&#xff1a;NginxPHP7.4MySQL5.6 一款开源的书签导航管理程序&#xff0c;界面简洁&#xff0c;安装简单&#xff0c;使用方便&#xff0c;基础功能免费。 TwoNav可帮助你将浏览器书签集中式管理&#…...

Android 12 源码分析 —— 应用层 六(StatusBar的UI创建和初始化)

Android 12 源码分析 —— 应用层 六&#xff08;StatusBar的UI创建和初始化) 在前面的文章中,我们分别介绍了Layout整体布局,以及StatusBar类的初始化.前者介绍了整体上面的布局,后者介绍了三大窗口的创建的入口处,以及需要做的准备工作.现在我们分别来细化三大窗口的UI创建和…...

华为云ROMA Connect亮相Gartner®全球应用创新及商业解决方案峰会,助力企业应用集成和数字化转型

9月13日-9月14日 Gartner全球应用创新及商业解决方案峰会在伦敦举行 本届峰会以“重塑软件交付&#xff0c;驱动业务价值”为主题&#xff0c;全球1000多位业内专家交流最新的企业应用、软件工程、解决方案架构、集成与自动化、API等企业IT战略和新兴技术热门话题。 9月13日…...

虚拟线上发布会带来颠覆性新体验,3D虚拟场景直播迸发品牌新动能

虚拟线上发布会是近年来在数字化营销领域备受关注的形式&#xff0c;而随着虚拟现实技术的不断进步&#xff0c;3D虚拟场景直播更成为了品牌宣传、推广的新选择。可以说&#xff0c;虚拟线上发布会正在以其颠覆性的新体验&#xff0c;为品牌带来全新的活力。 1.突破时空限制&am…...

Linux arm64 pte相关宏

文章目录 一、pte 和 pfn1.1 pte_pfn1.2 pfn_pte 二、其他宏参考资料 一、pte 和 pfn // linux-5.4.18/arch/arm64/include/asm/pgtable.h#define pte_pfn(pte) (__pte_to_phys(pte) >> PAGE_SHIFT) #define pfn_pte(pfn,prot) \__pte(__phys_to_pte_val((phys_addr_t)…...

MVCC:多版本并发控制案例分析(一)

&#xff08;笔记总结自b站马士兵教育课程&#xff09; 一、简介 MVCC&#xff1a;全称multi-version Concurency control&#xff0c;多版本并发控制&#xff0c;是为了解决并发读写问题存在的。MVCC的实现原理由三部分组成&#xff1a;隐藏字段、undolog、readview。 二、概…...

以数据为中心的安全市场快速增长

根据Adroit Market Research的数据&#xff0c;2021年全球以数据为中心的安全市场规模估计为27.6亿美元&#xff0c;预计到2030年将增长至393.48亿美元&#xff0c;2021年至2030年的复合年增长率为30.9%。 研究人员表示&#xff0c;以数据为中心的安全强调保护数据本身&#x…...

AUTOSAR汽车电子嵌入式编程精讲300篇-经典 AUTOSAR 安全防御能力的分析及改善(下)

目录 4.4.2 Security 攻击 4.4.3 Security 要求 4.4.4 SDSA 有效性验证 经典 AUTOSAR 安全防御能力分析...

AI绘图提示词Stable Diffusion Prompt 笔记

基础 提示词分为正向提示词&#xff08;positive prompt&#xff09;和反向提示词&#xff08;negative prompt&#xff09;&#xff0c;用来告诉AI哪些需要&#xff0c;哪些不需要词缀的权重默认值都是1&#xff0c;从左到右依次减弱&#xff0c;权重会影响画面生成结果。AI …...

xml元素值需要保留space

XmlReaderSettings.IgnoreWhitespace 属性 如果忽略空白&#xff0c;则为 true&#xff1b;否则为 false。 默认值为 false。 示例 下面创建一个设置对象&#xff0c;该对象可用于构造一个读取器&#xff0c;该读取器去除处理指令、注释和微不足道的空白。 StreamReader tex…...

Eclipse开源代码下载

当前插件开发&#xff0c;需要修改eclipse源码&#xff0c;如需要修改remote相关的代码&#xff0c;所以需要下载相关源码。网上大多资料都说的不清不楚的&#xff0c;也可能我太小白&#xff0c;不明白&#xff0c;反正就是折腾了一两天才感觉有点思路&#xff0c;改如何找源码…...

python多线程、进程

1、 并行和并发 &#xff08;1&#xff09;并发&#xff1a;一定周期内&#xff0c;多个任务来回切换执行&#xff0c;宏观上形成“该周期内有多个任务在同时进行”&#xff1b;但同一时间点&#xff0c;只有一个任务在执行。 举例&#xff1a; 你想在2小时内同时完成做饭、扫…...

Vue基础之模板语法介绍

前言 上篇我分享了关于Vue的入门&#xff0c;简单的入了个门。本篇文章将要分享的内容为Vue的模板语法。 一、插值 1.1、文本 1.2、html 1.3、属性 1.4、class、style绑定 1.5、表达式 在Vue的模板语法中&#xff0c;插值是一种常用的方式来动态地将数据渲染到视图中。Vue使用双…...

网站建设合作伙伴/seo的关键词无需

目录OS/OS.PATH模块系统操作目录操作Path模块判断例题OS/OS.PATH模块 在Python里面&#xff0c;我们要对文件系统进行访问&#xff0c;一般是通过os模块来实现的Python是跨平台语言。有了os模块&#xff0c;不需要关心什么操作系统下使用什么模块 系统操作 os.name显示当前使…...

哪里有做直销网站的/福州seo优化排名推广

A、MySQL 备份工具xtrabackup 的安装1. percona 官方xtrabackup 的二进制版本&#xff1b;二进制版本解压就能用了。2. 解压xtrabackup &创建连接tar -xzvf percona-xtrabackup-2.3.4-Linux-x86_64.tar.gz -C /usr/local/ln -s /usr/local/percona-xtrabackup-2.3.4 /usr/l…...

网站开发广告宣传/推广信息哪个平台好

oracle92在线文档链接:http://www.oracle.com/pls/db92/homepage?remarktahiti来自 “ ITPUB博客 ” &#xff0c;链接&#xff1a;http://blog.itpub.net/39335/viewspace-350661/&#xff0c;如需转载&#xff0c;请注明出处&#xff0c;否则将追究法律责任。 转载于:http:…...

建立网站信息内容建设管理规范/seo优化设计

opencv中mat&#xff0c;cvmat&#xff0c;Iplimage结构体定义以及格式互相转换opencv中常见的与图像操作有关的数据容器有Mat&#xff0c;cvMat和IplImage&#xff0c;这三种类型都可以代表和显示图像&#xff0c;但是&#xff0c;Mat类型侧重于计算&#xff0c;数学性较高&am…...

网站建设涉及的内容/友情链接的定义

android程序内存被分为2部分&#xff1a;native和dalvik&#xff0c;dalvik就是我们平常说的java堆&#xff0c;我们创建的对象是在这里面分配的&#xff0c;而bitmap是直接在native上分配的&#xff0c;对于内存的限制是 nativedalvik 不能超过最大限制。android程序内存一般限…...

saas系统是什么样的系统/优化网络培训

点击上方[word精品教程]-右上角[...]-[设为星标⭐]即可第一时间获取最新办公资讯对于办公人员来说&#xff0c;每天和Word打交道&#xff0c;处理各种工作方案、学术报告等文档&#xff0c;Word办公软件玩的溜是最基础的。不仅玩的溜&#xff0c;而且要效率高&#xff0c;才能成…...