注解

简介:

注解简介:

定义:注解(Annotation),也叫元数据。一种代码级别的说明。它是JDK1.5及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、属性、方法、局部变量、方法参数等的前面。

注解主要是用来配置信息的,例如文档注释也是注解的一种,要注意的一点是注解并不是代码仅仅是配置信息,变动比较大的信息就需要作为配置信息,源码注解只会在代码上出现,编译后则不会出现。所以注解有一个缺点就是需要修改配置信息的时候,得找到那个类的的源码进行修改。

在没有注解的时候配置信息一般都是写在文本文件或者XML文件上,因为这种方式配置信息与代码分离了,所以需要查看的时候不太直观、方便,优点就是可以直接修改配置信息,不需要去找源码类。注解优点则是方便查看,能够与代码对应查看起来没那么费力,比较直观,所以一般大多数开发人员还是会选择使用注解。

 

Java自带注解:

1.@SuppressWarnings注解:

这个注解是用来去除代码警告的,是忽略性注解。写在方法上就去除方法的警告,写在构造器上就去除构造器的警告,写在类上去去除所有警告等等,这个注解可以写在属性、类、方法、参数、构造器、局部变量上。

没写@SuppressWarnings注解的话:

da75f65138227b88b4221291b92011b0.png


在方法上写@SuppressWarnings注解:

3fdf98f451cb322de88b33f9bbccf0fb.png


在类上写了这个注解的话会去除这个类里的所有警告:

070904c73d067cfb2a697034d9bc11d0.png



2.@Deprecated注解:

这个注解大多数情况下是用来表示一个方法是过时方法的,一个方法上写了这个注解方法名就会显示一条横线,但是这个注解可以写在属性、类、方法、参数、构造器、包、局部变量上:

例如我写在方法上,这个方法就会显示一条横线:

38392caf04c42829c4805e663a059e7a.png



3.@Override注解:

这个注解只能写在方法上,是用来表示这个方法是重写父类的:

b142a8ec191bfc5a843390a62f257314.png

以上就是几个常用的Java自带的注解。





创建注解类:

  在创建工程或类的菜单栏中有一个选项:Annotation,这个选项是用来创建注解类的:

f267a503557d847778872660ab9530b9.png


元注解是用于声明注解类的一些特性的,例如这个注解能写在什么地方、在哪个区域有效等等,先介绍一下几个常用元注解的作用:

1.@Target用于声明注解能写在什么地方,这个注解里有几个参数:

ElementType.FIELD 能写在属性上

ElementType.TYPE 能写在类上

ElementType.CONSTRUCTOR 能写在构造器上

ElementType.METHOD 能写在方法上

ElementType.ANNOTATION_TYPE 能写在注解上

ElementType.PARAMETER 能写在参数上

ElementType.LOCAL_VARIABLE 能写在局部变量

 

2.@Retention用于声明注解的有效区域,这个注解里也有几个参数:

CLASS 在字节码也就是Class文件中有效,但是一旦加载后就无效了

SOURCE 只在源码中有效字节码中没有

RUNTIME 代码在运行时就有效

 

3.@Inherited用于声明此注解在子类中有效。

 

4.@Documented用于声明此注解在javadoc文档中奏效。

代码示例:

a902deb8d9f0cc8dc3b9b45f44bb5133.png



如果声明在注解类上的属性没有写默认值的话,在写这个注解时就会强制要求写一个值,不然就会报错,不想它报错就需要用default关键字写一个默认值上去:

82a4e470ca3ccd89a0db6d26b6d89a7a.png




使用反射机制对注解进行访问:

isAnnotationPresent方法可以判断属性、方法、构造器、类是否写有某个注解:

 

代码示例:

9ee6c39ac4980648c1f7b6f0415d7192.png


运行结果:

30c9657cc4609c1284c5afa959dcefb8.png




getAnnotations方法可以使用属性、方法、构造器、类的反射机制对象调用,得到所有的注解,返回的是Annotation数组对象:

代码示例:

e456cb3fe285f46d6581f0f2042cbac7.png


运行结果:

51035a4f245443ab1c08271695b5ad92.png


getAnnotation方法可以获得指定的注解:

代码示例:

5e58323486a31c59c91a0e41f3c10e43.png


运行结果:

6b47f20d2a025eeab8a89564113ab884.png





使用注解配置信息:

在注解里配置信息只需要根据注解类里申请的属性在括号里填写相对应的值即可,可以填写其中一个属性,也可以全部填写,如果没有默认值的属性则必须填写。

代码示例:

5a674606473bfec5c5b9c9cf892e55a7.png

3289a3f3725188bbbd91fd8090e38c70.png


运行结果:

5695b26710ba11241f0bd8247189c917.png




本文转自 ZeroOne01 51CTO博客,原文链接:http://blog.51cto.com/zero01/1976634,如需转载请自行联系原作者

相关文章
|
6天前
|
人工智能 运维 安全
|
4天前
|
人工智能 异构计算
敬请锁定《C位面对面》,洞察通用计算如何在AI时代持续赋能企业创新,助力业务发展!
敬请锁定《C位面对面》,洞察通用计算如何在AI时代持续赋能企业创新,助力业务发展!
|
5天前
|
机器学习/深度学习 人工智能 自然语言处理
B站开源IndexTTS2,用极致表现力颠覆听觉体验
在语音合成技术不断演进的背景下,早期版本的IndexTTS虽然在多场景应用中展现出良好的表现,但在情感表达的细腻度与时长控制的精准性方面仍存在提升空间。为了解决这些问题,并进一步推动零样本语音合成在实际场景中的落地能力,B站语音团队对模型架构与训练策略进行了深度优化,推出了全新一代语音合成模型——IndexTTS2 。
531 14
|
11天前
|
人工智能 JavaScript 测试技术
Qwen3-Coder入门教程|10分钟搞定安装配置
Qwen3-Coder 挑战赛简介:无论你是编程小白还是办公达人,都能通过本教程快速上手 Qwen-Code CLI,利用 AI 轻松实现代码编写、文档处理等任务。内容涵盖 API 配置、CLI 安装及多种实用案例,助你提升效率,体验智能编码的乐趣。
897 109
|
5天前
|
人工智能 测试技术 API
智能体(AI Agent)搭建全攻略:从概念到实践的终极指南
在人工智能浪潮中,智能体(AI Agent)正成为变革性技术。它们具备自主决策、环境感知、任务执行等能力,广泛应用于日常任务与商业流程。本文详解智能体概念、架构及七步搭建指南,助你打造专属智能体,迎接智能自动化新时代。