注解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了注解相关的知识,希望对你有一定的参考价值。

注解简介:

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

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

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

Java自带注解:

[email protected]注解:

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

没写@SuppressWarnings注解的话:

image

在方法上写@SuppressWarnings注解:

image

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

image

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

image

[email protected]注解:

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

image

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

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

image

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

ElementType.FIELD: 能写在属性上 ElementType.TYPE: 能写在类上 ElementType.CONSTRUCTOR: 能写在构造器上 ElementType.METHOD: 能写在方法上 ElementType.ANNOTATION_TYPE: 能写在注解上 ElementType.PARAMETER: 能写在参数上 ElementType.LOCAL_VARIABLE: 能写在局部变量中

[email protected]用于声明注解的有效区域,这个注解里也有几个参数:

CLASS: 在字节码也就是Class文件中有效,但是一旦加载后就无效了 SOURCE: 只在源码中有效,字节码中没有 RUNTIME: 代码在运行时就有效

[email protected]用于声明此注解在子类中有效。

[email protected]用于声明此注解在javadoc文档中奏效。 代码示例:

image

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

image

使用反射机制对注解进行访问: isAnnotationPresent方法可以判断属性、方法、构造器、类是否写有某个注解:

代码示例:

image

运行结果:

image

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

image

运行结果:

image

getAnnotation方法可以获得指定的注解: 代码示例:

image

运行结果:

image

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

代码示例:

image

image

运行结果:

image

以上是关于注解的主要内容,如果未能解决你的问题,请参考以下文章

JAXB的@XmlElement注解

如何使用支持库 25.0.0 及更高版本获取片段()

基于XML和注解的Spring定时器

Springboot使用MatrixVariable 注解

Java Lambda

微信小程序代码片段