注解(Annotation)

news2024/9/20 18:47:52

注解

  1. 注解也被称为元数据(MateDate),用于修饰或解释包,类,方法,属性,构造器,局部变量等数据信息
  2. 和注释一样,注解不会影响程序逻辑,但是注解可以被编译或者运行,相当于嵌入在代码中的补充信息
  3. 在JavaSE中,注解的目的比较简单,例如标记重写方法,标记过时的功能,忽略警告等,JavaEE企业级开发中有比较重要的位置,

注解使用介绍

使用Annotation注解时,需要在前面加上@符号,且把注解当成一个修饰符使用。用于修饰它支持的程序元素

三个基本Annotation注解

  • @Override:限定某个方法,是重写了父类的方法,该注解只能用于方法
  • @Deprecated:用于表示某个程序元素(类,方法等),表示已过时了,不建议使用
  • @SuppressWarnings:抑制编译器警告,忽略某些警告

@Override的使用

当子类重写了父类的每个方法时,可以使用@Override进行修饰。
如果不使用,也不会影响重写。
但是如果使用了,编译器会检查一下是否真的重写了。如果该方法没有重写父类的方法,则会报错

案例演示:

public class Father {
    public void fly(){}
}
class Son extends Father{
    @Override
    public void fly(){}
    //如果使用了@Override修饰,但是该方法又没有重写父类的方法,就会报错
    @Override
   // public void soor(){}
}

如果查看@Override的定义会发现是@interface,但是这里不是表示接口,而是一个注解类

使用@Override的注意细节

  1. @Override表示指定重写父类的方法(从编译层面验证),如果父类没有该方法,则报错
  2. 不写@Override,但是子类仍然构成重写,不影响
  3. @Override只能修饰方法,不能修饰其他
  4. 查看@Override注解源代码为@Target(ElementType.METHOD)说明只能修饰方法
  5. @Target是修饰注解的注解,称为元注解

@Deprecated的使用

@Deprecated可以修饰:方法,类,包,参数,属性等
来表示被修饰的元素已经过时了,不推荐使用,但是是可以使用的。
比如在2022年的IPone4s,IPone4s就可以使用@Deprecated修饰

被@Deprecated修饰的元素在被调用时,会有一根小线

案例演示:
在这里插入图片描述
可以看到这个线条让人感觉这个元素就很low,就是个细狗。

@Deprecated使用注意事项

  1. Deprecated用于修饰每个程序元素,表示它已过时,不建议使用
  2. 可以修饰,方法,类,属性,包等
  3. Deprecated一般用在新老版本的过渡和兼容

@SuppressWarnings的使用

@SuppressWarnings可以修饰在,类,方法,属性等的上面
在写代码时,通常会碰到一些警告,比如下面的:
在这里插入图片描述
可能是每个类没有使用,或者是某个方法没有使用到,,,,等等的。就很烦
所以就可以使用@SuppressWarnings({“想要忽略警告的内容”}),
比如要忽略这个类中所有的警告就在这个类上面 @SuppressWarnings({“all”})
在这里插入图片描述
可以看到就没有黄色警告了。如果想要单独忽略某个方法的,就在这个方法上注解。

可能会用到的内容:
全部警告:@SuppressWarnings({“all”})
没有检查的警告:@SuppressWarnings({“unchecked”})
没有使用的警告:@SuppressWarnings({“unused”})

元注解(了解即可)

元注解是可以注解到注解上的注解,或者说元注解是一种基本注解,但是它能够应用到其它的注解上面。它的作用和目的就是给其他普通的标签进行解释说明的。
比如说明 这个注解可以注解在哪些元素上面:类 方法 属性 等等。或者声明这个注解会被保留到哪个阶段等等
java中一般有4中元注解:
@Target 表示该注解用于什么地方
@Retention 表示在什么级别保存该注解信息
@Documented 将此注解包含在 javadoc 中 ,它代表着此注解会被javadoc工具提取成文档
@Inherited 允许子类继承父类中的注解

@Target

这个元注解表示:注解改注解可以用在什么元素上面:
具体可以使用在什么上可以看支持的枚举类对象
ElemenetType.CONSTRUCTOR-----------------------------构造器声明
ElemenetType.FIELD ----------------------------------域声明(包括 enum 实例)
ElemenetType.LOCAL_VARIABLE------------------------- 局部变量声明
ElemenetType.METHOD ---------------------------------方法声明
ElemenetType.PACKAGE --------------------------------包声明
ElemenetType.PARAMETER ------------------------------参数声明
ElemenetType.TYPE----------------------------------- 类,接口(包括注解类型)或enum枚举声明

@Retention

@Retention表示该注解可以保留到哪一个阶段,java文件有三个阶段:编译阶段 class文件 JVM运行阶段
具体支持到什么阶段可以看支持到哪一个枚举类对象:
RetentionPolicy.SOURCE-------------注解将被编译器丢弃
RetentionPolicy.CLASS -------------注解在class文件中可用,但会被JVM丢弃
RetentionPolicy.RUNTIME ---------JVM将在运行期也保留注释,因此可以通过反射机制读取注解的信息

@Documented

表示此注解会保存到javadoc中,在提取成文档的时候可以显示内容

@Inherited

允许子类继承父类的注解

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

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

相关文章

如何定义需求优先级?

本文将围绕以下问题展开:1、什么是需求优先级排序,目的是什么?2、优先级排序的8大依据;3、需求优先级排序面临的挑战;4、一些优秀的需求优先级排序工具。 一、什么是需求优先级排序,目的是什么?…

Mybatis-plus 用法

本文主要介绍 mybatis-plus 这款插件,针对 springboot 用户。包括引入,配置,使用,以及扩展等常用的方面做一个汇总整理,尽量包含大家常用的场景内容。 关于 mybatis-plus 是什么,不多做介绍了,看…

大一作业HTML网页作业:简单的旅游 1页 (旅游主题)

⛵ 源码获取 文末联系 ✈ Web前端开发技术 描述 网页设计题材,DIVCSS 布局制作,HTMLCSS网页设计期末课程大作业 | 游景点介绍 | 旅游风景区 | 家乡介绍 | 等网站的设计与制作 | HTML期末大学生网页设计作业,Web大学生网页 HTML:结构 CSS&…

94-98-Hadoop-MapReduce工作流程(重要)

Hadoop-MapReduce工作流程(重要): 上面的流程是整个 MapReduce 最全工作流程,但是 Shuffle 过程只是从第 7 步开始到第 16 步结束,具体 Shuffle 过程详解,如下: (1)Map…

Java 动态判断数组维数并取值

一、背景 技术交流群里有同学提了一个看似基础但挺有意思的问题。 问题描述: 一个对象是一个未知的数组类型,可能是 short 二维数组,可能是 int 的三维数组等。 诉求: 想要遍历修改(获取)它的值不想写太多…

springboot 接入 logback.xml 彻底搞出一个超级完整加注释的版本-可在生产环境直接使用

目录 介绍 开搞 先logback.xml相关的 pom.xml application.yml 配置 启动配置 类中编写 引入 Slf4j logback.xml 重点介绍 logback项目名称 最大保存时间 365天 lOGGER PATTERN 根据个人喜好选择匹配 控制台输出 滚动文件 过滤器 可以选择自己要的日志级别 不选…

【机器学习数据集制作】视频转图片(代码注释,思路推导)

目录数据集效果资源下载实现思路代码实战总结『机器学习』分享机器学习0基础的数据集制作过程。 欢迎关注 『机器学习』 系列,持续更新中 欢迎关注 『机器学习』 系列,持续更新中 数据集效果 资源下载 拿来即用,所见即所得。 项目仓库&#…

​LabVIEW从另一个VI或通过VI服务器访问正在运行的可执行文件

​LabVIEW从另一个VI或通过VI服务器访问正在运行的可执行文件 有没有办法从另一个VI或可执行文件访问正在运行的LabVIEW可执行文件。例如,从显示控件获取值,为控件设置值,以及初始化运行LabVIEW可执行文件VI的前面板。 在正在运行的可执行文…

IOS逆向初探

前言 这些文章用于记录学习路上的点点滴滴,也希望能给到刚入门的小伙伴们一点帮助。爱而所向,不负所心。 环境 iphone 6 MacOS Monterey 12.3.1 一、IOS开发语言 Objective-C Objective-C是iOS操作系统运用的软件开发语言。Objective-C的流行完全是因…

免费下载word简历模板的网站

我这里分享了6个免费简历网站,分享给各位。 1.OfficePlus 微软官方出品的 office 免费模板网站https://www.officeplus.cn/ 2.简历设计网 2000Word模板免费下载,每个用于每天可下载10篇免费模板。https://www.jianlisheji.com/ 3.办公资源…

mysql 一对多查询 合并为一行数据

用户包含多个角色 执行: SELECT ur.user_id,u.name user_name,u.mail,ur.role_id,r.name role_name FROM tb_user_role ur LEFT JOIN tb_user u ON u.idur.user_id LEFT JOIN tb_role r ON r.idur.role_id WHERE u.is_delete0 ORDER BY …

华为大数据HCIA题目1

1. HDFS 不适用于以下哪些场景?[多选题] A.流式数据访问 B.大量小文件存储 C.大文件存储与访问 D.随机写入 (BD) 2. ZKFC 进程部署在 hdfs 中的以下那个节点上?[多选题] A.active namenode B.standby namenode C.datanod…

重塑运维系统,跨越烟囱式建设的陷阱

企业运维系统建设经过多年演变,从以商业软件为主,到开源软件的百花齐放,极大的降低了成本,但是在建设过程中,却非常容易落入到烟囱式建设的陷阱,因此如何跨越它,成为了众多企业面临的难题。 今…

Deepin Linux系统怎安装打印机? 兄弟1618w打印机驱动安装图文教程

Deepin系统作为国产的一款电脑操作系统,拥有极为非常美观的UI界面。很多不熟悉该操作系统的朋友都不知道该怎么安装打印机驱动,今天我们就以兄弟1618w打印机为例,分享驱动下载,安装,调试的过程。 电脑环境和打印机型号…

Design Compiler工具学习笔记(5)

目录 引言 知识储备 代码风格 DFT 实际操作 引言 本篇继续学习 DC的基本使用。本篇主要学习 DC 工作机理和工作过程 以及简单介绍 DFT。 前文链接: Design Compiler工具学习笔记(1) Design Compiler工具学习笔记(2&#…

动态规划算法学习四:最大上升子序列问题(LIS:Longest Increasing Subsequence)

文章目录前言一、问题描述二、DP步骤1、最优子结构a、限界上升子序列b、最优子结构性质2、状态表示和递推方程3、计算最优值4、算法实现三、优化:非DP /二分法1、新问题2、算法实现前言 一、问题描述 二、DP步骤 1、最优子结构 给定序列𝑆[&#x1d4…

“300万”只是新起点,比亚迪将开启下一个 “黄金周期”

比亚迪再次创造全球新能源汽车市场新标杆。 11月16日,比亚迪第300万辆新能源汽车正式下线。成为首个达成这一里程碑的中国品牌。 正如比亚迪股份有限公司董事长兼总裁王传福说,从“第1辆新能源汽车到第100万辆新能源汽车”用时13年、从“100万辆到200万…

MCE | 磁珠 Protocol,如何快速捕获您心仪的蛋白~

磁珠的优势 ◎ 蛋白荷载量高 ◎ 特异性强、非特异性结合性低 ◎ 样品损失小 ◎ 操作方便 如何操作 ■ 磁珠预处理 将磁珠充分混悬,取 25-50 μL 磁珠,置于 1.5 mL EP 管中,加入 400 μL 结合/洗涤缓冲液,充分混悬,置…

Word处理控件Aspose.Words功能演示:使用 Java 将文本转换为 PDF

TXT格式的文本文档包含行形式的纯文本。TXT 文件是存储没有任何格式的纯文本的最简单和最简单的方法。我们可以在任何文本编辑器或文字处理应用程序中轻松创建、打开和编辑 TXT 文件。在某些情况下,我们可能需要将文本转换为只读格式,例如PDF。在本文中&…

flutter 怎么消除按钮事件的点击溅射背景

flutter 怎么消除按钮事件的点击溅射背景前言一、设置 ThemeData二、Theme 设置三、单独设置总结前言 在flutter 中,大部分事件组件都有一个溅射背影,但是假如某天需求让我们取消点击溅射效果,我们该怎么办呢?本篇文章将记录怎么…