加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

Java注解annotation的用途分析

发布时间:2021-05-24 09:07:04 所属栏目:编程 来源:互联网
导读:今天在看以前写的代码,发现自己对注解的了解还不是非常透彻,经常选择性就忽视了对注解实现的探究,遂查询资料学习了一下。 注解是什么 实现格式 从代码来看我

今天在看以前写的代码,发现自己对注解的了解还不是非常透彻,经常选择性就忽视了对注解实现的探究,遂查询资料学习了一下。

注解是什么

实现格式

从代码来看我们知道注解的实现格式是:

public @interface MyAnnotation{ 

    属性列表; 

所以我们有了第一直觉,注解可能是一个接口。通过查询资料得知(可以通过反编译软件),实际上 @interface 是自定义接口对 annotation 接口的继承,@interface 实际是一个语法糖。

import java.lang.annotation.Annotation; 

public interface MyAnnotation extends Annotation{ 

    属性列表; 

使用位置

类、方法、成员变量、形参位置。

分类

不同角度,我们对注解能有不同的分类,但知道了注解的实现原理后就会明白,实际上用法和实现方法都是一回事。

来源

1. JDK注解:一般都是在编译时起用作的注解,比如我们最为熟悉的 @Override。

2. 第三方框架注解

3. 自定义注解

运行机制(保留策略)

@Retention({保留策略}) 

    public @interface MyAnnotation{ 

        属性列表; 

    } 

1.源码(SOURCE)注解:注解只在源码中存在,编译成.class文件就不存在了,也就是说只能起到 “看” 的作用。

2.编译(CLASS)注解:注解在源码和.class文件中都存在(JDK自带注解都属于编译时注解),一般用来作语法校验。

3.运行(RUNTIME)注解:在运行阶段还起作用,甚至会影响运行逻辑的注解(@Autowired属于运行时注解),第三方框架和自定注解一般采用 runtime 的保留策略,能实现依赖注入、切面编程等功能。

元注解

实际在上面,我们已经看到一个元注解了(@Retention)。元注解就是加在注解上描述注解的注解。 一共有5个。

1. @Documented

在生成javadoc的时候就会把@Documented注解给显示出来。

2. @Target(关键)

限定作用位置,Method、Class等等。

9. @Inherited

被 @Inherited 注解的注解修饰了一个父类,如果他的子类没有被其他注解修饰,则它的子类也继承了父类的注解。

10. @Retention(关键)

上文的保留策略注解,影响注解作用。

6. @Repeatable (不重要)

@Repeatable 注解是用于声明其它类型注解的元注解,来表示这个声明的注解是可重复的。@Repeatable的值是另一个注解,其可以通过这个另一个注解的值来包含这个可重复的注解。

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读