注解概述

注解(Annotation),是jdk5之后新增一项技术,可以通过在Java类,方法,属性等元素上加上注解,实现一些特定功能:编译检查,丰富文档化注释的内容,实现项目特定程序配置。注解只需要少量代码的存在即可;注释即解释;注解通常不会影响程序的正常逻辑,只是一种标记,Java中的注解通常是给编译器进行识别的

注解类写法

全面浅析java注解
可以看到注解类的前面是@interface,查看API文档可以得知注解的本质就是一个Annotation接口

全面浅析java注解
全面浅析java注解
这个注解中还没有写任何的代码,因此可以在任何地方使用

元注解

元注解顾名思义我们可以理解为注解的注解,它是作用在注解中,方便我们使用注解实现想要的功能。元注解分别有@Retention、 @Target、 @Document、 @Inherited

@Retention(保留范围)

Retention表示注解存在阶段是保留在源码(编译期),字节码(类加载)或者运行期(JVM中运行)。在@Retention注解中使用枚举RetentionPolicy来表示注解保留时期
全面浅析java注解

@Retention(RetentionPolicy.SOURCE),注解仅存在于源码中,在class字节码文件中不包含
@Retention(RetentionPolicy.CLASS), 默认的保留策略,注解会在class字节码文件中存在,但运行时无法获得
@Retention(RetentionPolicy.RUNTIME), 注解会在class字节码文件中存在,在运行时可以通过反射获取到
大多数时候会用到RUNTIME。

@Target(使用范围)

全面浅析java注解
可以看到使用范围非常的广泛,可以作用在任意地方

全面浅析java注解
当加上使用范围时,不在范围内的注解就会报错
全面浅析java注解

@Documented

Document的英文意思是文档。它的作用是能够将注解中的元素包含到 Javadoc 中去。

@Inherited

用于标记当前注解在使用到某个类上时,如果有子类继承该类,则注解也会默认作用子类上

@自定义注解支持的类型

String类型
所有的基本类型
枚举
注解
以上所有类型的数组类型
注意事项:注解中不支持自定义的数据类型
如果注解中只有一个属性(或者其他属性都有默认值),且该属性的名称叫“value”时,在使用该注解的时候只需要设置具体值就可以了,不需要设置属性名

内置注解

@Override:检查方法是否属于重写
@Depracted : 标记类,属性,方法为过时
@SupressWarning:抑制编译抛出的警告信息
@FunctionalInterface:java8新增函数式接口的检查注解

应用领域

1、丰富文档注释
2、编译检查
3、完成程序配置

相关文章:

  • 2022-12-23
  • 2021-12-10
  • 2022-01-18
  • 2022-02-01
  • 2022-01-06
  • 2021-09-07
  • 2022-12-23
  • 2021-08-27
猜你喜欢
  • 2021-10-04
  • 2021-12-16
  • 2021-11-27
  • 2021-10-26
  • 2022-12-23
  • 2021-12-14
  • 2021-07-26
相关资源
相似解决方案