java18-枚举类和注解

枚举类

枚举类的理解

  • 类的对象是有限个的,确定的
  • 当需要定义一组常量时,强烈建议枚举类
public class SeasonTest {public static void main(String[] args) {Season spring = Season.SPRING;System.out.println(spring);}
}
class Season{// 声明season对象属性 private final 修饰private final String seasonName;private final String seasonDesc;// 私有化类的构造器private Season(String seasonName,String seasonDesc){this.seasonName=seasonName;this.seasonDesc=seasonDesc;}//提供当前枚举类的多个对象public static final Season SPRING=new Season("春天","春暖花开");public static final Season SUMMER=new Season("夏天","夏日炎炎");// 获取属性public String getSeasonName() {return seasonName;}public String getSeasonDesc() {return seasonDesc;}// 提供toString@Overridepublic String toString() {return "Season{" +"seasonName='" + seasonName + '\'' +", seasonDesc='" + seasonDesc + '\'' +'}';}
}
  • jdk5.0新增定义方式
public class SeasonTest1 {public static void main(String[] args) {Season1 summer = Season1.SUMMER;// 继承于Enum类System.out.println(summer);}
}enum Season1{//1.提供当前枚举类的多个对象,多个对象之间用逗号隔开SPRING("春天","春暖花开"),SUMMER("夏天","夏日炎炎");// 声明season对象属性 private final 修饰private final String seasonName;private final String seasonDesc;// 私有化类的构造器private Season1(String seasonName,String seasonDesc){this.seasonName=seasonName;this.seasonDesc=seasonDesc;}// 获取属性public String getSeasonName() {return seasonName;}public String getSeasonDesc() {return seasonDesc;}}

Enum类常用方法

方法说明
values()返回枚举类型的对象数组
valueof(String str)返回枚举类中对象名是str的对象
toString()返回当前枚举对象常量的名称
public class SeasonTest1 {public static void main(String[] args) {Season1 summer = Season1.SUMMER;// 继承于Enum类System.out.println(summer);System.out.println(summer.toString());Season1[] values = Season1.values();for (int i = 0; i < values.length; i++) {System.out.println(values[i]);}Season1 summer1 = Season1.valueOf("SUMMER");System.out.println(summer1);}
}enum Season1{//1.提供当前枚举类的多个对象,多个对象之间用逗号隔开SPRING("春天","春暖花开"),SUMMER("夏天","夏日炎炎");// 声明season对象属性 private final 修饰private final String seasonName;private final String seasonDesc;// 私有化类的构造器private Season1(String seasonName,String seasonDesc){this.seasonName=seasonName;this.seasonDesc=seasonDesc;}// 获取属性public String getSeasonName() {return seasonName;}public String getSeasonDesc() {return seasonDesc;}}

使用enum关键字定义枚举类实现接口的情况

  • 实现接口,在enum中实现抽象方法

public class SeasonTest2 {public static void main(String[] args) {Season2 spring = Season2.valueOf("SPRING");spring.show();// 展示一段话}
}
interface info{void show();
}
enum Season2 implements info{//1.提供当前枚举类的多个对象,多个对象之间用逗号隔开SPRING("春天","春暖花开"),SUMMER("夏天","夏日炎炎");// 声明season对象属性 private final 修饰private final String seasonName;private final String seasonDesc;// 私有化类的构造器private Season2(String seasonName,String seasonDesc){this.seasonName=seasonName;this.seasonDesc=seasonDesc;}// 获取属性public String getSeasonName() {return seasonName;}public String getSeasonDesc() {return seasonDesc;}@Overridepublic void show() {System.out.println("展示一段话");}
}
  • 每个成员接口显示不一样的

public class SeasonTest2 {public static void main(String[] args) {Season2 spring = Season2.valueOf("SPRING");spring.show();// 春天展示}
}
interface info{void show();
}
enum Season2 implements info{//1.提供当前枚举类的多个对象,多个对象之间用逗号隔开SPRING("春天","春暖花开"){@Overridepublic void show() {System.out.println("春天展示");}},SUMMER("夏天","夏日炎炎"){@Overridepublic void show() {System.out.println("夏天展示");}};// 声明season对象属性 private final 修饰private final String seasonName;private final String seasonDesc;// 私有化类的构造器private Season2(String seasonName,String seasonDesc){this.seasonName=seasonName;this.seasonDesc=seasonDesc;}// 获取属性public String getSeasonName() {return seasonName;}public String getSeasonDesc() {return seasonDesc;}
}

注解(Annotation)

  • Annotation是代码中的特殊标记
  • 在编译,类加载,运行时被读取,并执行对应的操作
  • Annontation可以像修饰符一样被使用,可用于修饰包,类,构造器,方法,成员变量,参数,局部变量声明

生成文档相关的注解

注解说明
@author表明开发该类的作者,多个用‘,’分割
@version表明该类模块的版本
@see参考转向,也就是主题
@since从哪个版本开始增加的
@param对方法中某参数说明,没参数就不写
@return对方法返回值说明,void就不写
@exception对方法可能抛出异常说明,没throw显示抛出异常就不写

注:

  • @param,@return,@exception这三个方法只用于方法
  • @param格式要求 @param 形参名,形参类型,形参说明
  • @return格式要求 @return 返回值类型 返回值说明
  • @exception格式要求 @exception 异常类型,异常说明

编译时进行格式检查(JDK内置三个基本注解)

注解说明
@Override限定重写父类方法
@Deprecated用于表示所修饰的元素已过时
@SuppressWarnings抑制编译器警告

跟踪代码依赖性,实现替代文件配置功能

  • Servlet3.0提供了注解,使得不再需要在web.xml文件中进行Servlet的部署
  • Spring中事务管理

自定义注解

  • 注解声明为@interface
  • Annotation的成员变量在定义中以无参数方式方法的形式来声明,其方法名和返回值定义了该成员的名字和类型
  • 如何自定义成员没有值,起到标识作用
public @interface MyAnnotation {String value() default "hello";
}

JDK中的元注解

注解说明取值
@Retention只能用于修饰一个Annotation定义,用于指定该Annotation类的生命周期,@Retention包含一个RetentionPolicy类型的成员变量SOURCE(编译时抛弃)CLASS(不加载到内存里)RUNTIME(加载到内存,通过反射获取)
@Target用于修饰Annotation,用于指定修饰的Annotation能用于修饰哪些程序元素CONSTRUCTOR(构造器)FIFLD(域)LOCAL_VARIABLE(局部变量)METHOD(方法)
@Documented该Annotation类将被javadoc工具提成文档
@Inherited被他修饰的Annotation将具有继承性

可重复注解

  • 可以在一个类上多次注解
  • 在MyAnnotation上声明@Repeatable,成员之为MyAnnotations.class
  • MyAnnotation的Target和Retention等元注解和MyAnnotations相同

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

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

相关文章

Docker 学习总结(78)—— Docker Rootless 让你的容器更安全

前言 在以 root 用户身份运行 Docker 会带来一些潜在的危害和安全风险,这些风险包括: 容器逃逸:如果一个容器以 root 权限运行,并且它包含了漏洞或者被攻击者滥用,那么攻击者可能会成功逃出容器,并在宿主系统上执行恶意操作。这会导致宿主系统的安全性受到威胁。 特权升…

可以实现2路(4通道)FlexRay总线

可以实现2路&#xff08;4通道&#xff09;FlexRay总线的汽车、无人机等高可靠性通讯应用解决方案。 FlexRay总线的出现汽车和无人机通讯领域&#xff0c;为高可靠性通讯应用提供了一种新的解决方案。FlexRay总线具有高速、高可靠性、灵活性等特点&#xff0c;可以满足汽车、无…

解答嵌入式和单片机的关系

嵌入式系统是一种特殊的计算机系统&#xff0c;用于特定任务或功能。而单片机则是嵌入式系统的核心部件之一&#xff0c;是一种在单个芯片上集成了处理器、内存、输入输出接口等功能的微控制器。刚刚好我这里有一套单片机保姆式教学&#xff0c;里面有编程教学、问题讲解、语言…

自学Mysql调优笔记

Mysql性能调优学习 预计十天完成14/day 1. 存储引擎 存储引擎是基于表的&#xff0c;而不是基于库的 SHOW ENGINES --展示所有存储引擎1.1 InnoDB DML操作遵循ACID模型&#xff0c;支持事务。 行鸡锁&#xff0c;提供并发访问性能。 支持外键约束&#xff0c;保证数据完…

大学毕业生应聘求职,应用MBTI职业性格测试

受到大环境的影响&#xff0c;各企业也是变的很不景气&#xff0c;但是这也正是给了求职者一个缓冲期。根据因果论&#xff0c;我始终觉得好事和坏事是交织在一起的&#xff0c;在某种程度上影响了我们的经济&#xff0c;但是过后&#xff0c;必定很迎来新的一波经济发展的狂潮…

Android.bp常用语法和预定义属性

介绍 Android.bp是Android构建系统中用于定义模块和构建规则的配置文件&#xff0c;它使用一种简单的声明式语法。以下是Android.bp的一些常见语法规则和约定&#xff1a; 注释&#xff1a; 单行注释使用//符号。 多行注释使用/和/包围。 和go语言相同 // 这是单行注释 /* 这是…

【二叉树】——链式结构(快速掌握递归与刷题技巧)

&#x1f4d9;作者简介&#xff1a; 清水加冰&#xff0c;目前大二在读&#xff0c;正在学习C/C、Python、操作系统、数据库等。 &#x1f4d8;相关专栏&#xff1a;C语言初阶、C语言进阶、C语言刷题训练营、数据结构刷题训练营、有感兴趣的可以看一看。 欢迎点赞 &#x1f44d…

Qt/C++音视频开发55-加密保存到文件并解密播放

一、前言 为了保证视频文件的安全性,有时候需要对保存的视频文件加密,然后播放的时候解密出来再播放,只有加密解密的秘钥一致时才能正常播放,用ffmpeg做视频文件的加密保存和解密播放比较简单,基于ffmpeg强大的字典参数设计,在avformat_write_header写入头部数据的时候,…

蓝桥杯 题库 简单 每日十题 day10

01 最少砝码 最少砝码 问题描述 你有一架天平。现在你要设计一套砝码&#xff0c;使得利用这些砝码 可以出任意小于等于N的正整数重量。那么这套砝码最少需要包含多少个砝码&#xff1f; 注意砝码可以放在天平两边。 输入格式 输入包含一个正整数N。 输出格式 输出一个整数代表…

【漏洞复现】企望制造 ERP命令执行

漏洞描述 由于企望制造 ERP comboxstore.action接口权限设置不当&#xff0c;默认的配置可执行任意SQL语句&#xff0c;利用xp_cmdshell函数可远程执行命令&#xff0c;未经认证的攻击者可通过该漏洞获取服务器权限。 免责声明 技术文章仅供参考&#xff0c;任何个人和组织…

什么是CPC认证,CPC认证怎么办理?CPC美国进口商怎么处理?

1、跨境卖家作为“进口商”&#xff0c;想将人中国工厂生产的的产品卖到美国&#xff0c;需要上向作为零售/商的的亚马逊提供CPC证书。 l366–OOll–lo3 v 2、cpc认证是什么cpsc认证怎么办理。 3、cpc和认证认可原则是。 4、而且cpc认证在我看来基本内容可包括及非地区总之会计…

【C++11】万能引用与完美转发

文章目录 1. 模板中的&&—万能引用2. 完美转发及其应用场景3. 用到的代码3.1 string.h3.2 list.h3.3 test.cpp 1. 模板中的&&—万能引用 首先我们来看这样一段代码&#xff1a; 这里有4个函数&#xff0c;我们很容易能看出来它们是一个重载的关系 然后我们给这…

在master分支进行代码回滚

问题一&#xff1a; 要回滚master代码&#xff0c;要在master分支上进行reset&#xff0c;其他分支进行reset时&#xff0c;会提示git push提交出现Everything up-to-date提示问题&#xff1b;但这样危险&#xff0c;要提前备份下代码 链接: Everything up-to-date 问题二&am…

CSI及CPHY的学习知识点

0.CSI早期只有DPHY可用 CSI-2 v1.3及之后版本提供了更高的接口带宽和更好的通道布局灵活性。从CSI-2 V1.3开始引入了C-PHY 1.0&#xff08;C-PHY 1.0是MIPI联盟于2014年9月发布的新物理接口)&#xff0c;能够兼容之前的D-PHY v1.2版本。 在CSI-2 V1.2及以前都只能用DPHY传输csi…

echarts添加点击事件

实现效果&#xff1a;点击图表&#xff0c;弹出该数据下对应得详情 官方文档&#xff1a; 封装的图表组件中&#xff1a; 点击获取点击得对象&#xff0c;进而将需要的参数传给父组件&#xff0c;在父组件中再去请求接口获取更多信息 this.chart.on(click, (params)> {th…

HTML5福利篇--使用Canvas画图

目录 一.Canvas元素 1.Canvas元素定义 2.使用JavaScript获取页面中的Canvas对象 二.绘制图形 1.绘制直线 2.绘制矩形 &#xff08;1&#xff09;rect() &#xff08;2&#xff09;strokeRect() &#xff08;3&#xff09;fillRect()和clearRect()函数 3.绘制圆弧 4.…

C语言的stdio.h的介绍

C语言的stdio.h的介绍 C语言的stdio.h的介绍 C语言的stdio.h的介绍C语言stdio.h的介绍 C语言stdio.h的介绍 这个含义是导入标准输入输出库 包含头文件.h&#xff0c;std标准库&#xff0c;io是input output输入输出库 <>代表系统库&#xff0c;自定义的话用""…

Stm32_点灯

利用HAL库基本语法实现C8T6点灯操作 引脚配置 PB3、4 、5 //设置为output PB6、7 设置Input且为上拉初始化代码&#xff1a; 由于3、4、5引脚默认输出为0灯泡默认点亮所以要将他们初始化为1 void Inint(){//初始化灯泡函数熄灭HAL_GPIO_WritePin(GPIOB, GPIO_PIN_3, GPIO_PI…

软考高级系统架构设计师系列论文真题六:论信息系统的安全性与保密性设计

软考高级系统架构设计师系列论文真题六:论信息系统的安全性与保密性设计 一、论信息系统的安全性与保密性设计二、找准核心论点三、理论素材准备四、精品范文赏析1.摘要2.正文3.总结软考高级系统架构设计师系列论文之:百篇软考高级架构设计师论文范文软考高级系统架构设计师系…

C#源码 LIS实验室(检验科)信息系统源码 SaaS模式的Client/Server架构

LIS实验室&#xff08;检验科&#xff09;信息系统&#xff0c;一体化设计&#xff0c;与其他系统无缝连接&#xff0c;全程化条码管理。集申请、采样、核收、计费、检验、审核、发布、质控、查询、耗材控制等检验科工作为一体的网络管理系统。 技术细节&#xff1a; 体系结构…