全面浅析java注解

注解概述

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

注解类写法

在这里插入图片描述
可以看到注解类的前面是@interface,查看API文档可以得知注解的本质就是一个Annotation接口

在这里插入图片描述
在这里插入图片描述
这个注解中还没有写任何的代码,因此可以在任何地方使用

元注解

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

@Retention(保留范围)

Retention表示注解存在阶段是保留在源码(编译期),字节码(类加载)或者运行期(JVM中运行)。在@Retention注解中使用枚举RetentionPolicy来表示注解保留时期
在这里插入图片描述

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

@Target(使用范围)

在这里插入图片描述
可以看到使用范围非常的广泛,可以作用在任意地方

在这里插入图片描述
当加上使用范围时,不在范围内的注解就会报错
在这里插入图片描述

@Documented

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

@Inherited

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

@自定义注解支持的类型

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

内置注解

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

应用领域

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值