Java注解之Retention、Documented、Target介绍
来源:互联网 发布:软件可靠性测试报告 编辑:程序博客网 时间:2024/05/18 03:30
先看代码,后面一个个来解析:
/** * Created by lim on 2017/4/19. */@Retention(RetentionPolicy.RUNTIME)@Target(value = {ElementType.METHOD, ElementType.TYPE})@Documentedpublic @interface Authority {}
Retention注解
Retention(保留)注解说明,这种类型的注解会被保留到那个阶段. 有三个值:
1.RetentionPolicy.SOURCE —— 这种类型的Annotations只在源代码级别保留,编译时就会被忽略
2.RetentionPolicy.CLASS —— 这种类型的Annotations编译时被保留,在class文件中存在,但JVM将会忽略
3.RetentionPolicy.RUNTIME —— 这种类型的Annotations将被JVM保留,所以他们能在运行时被JVM或其他使用反射机制的代码所读取和使用.
下面示例中, @Retention(RetentionPolicy.RUNTIME)注解表明 Test_Retention注解将会由虚拟机保留,以便它可以在运行时通过反射读取.
Documented 注解
Documented 注解表明这个注解应该被 javadoc工具记录. 默认情况下,javadoc是不包括注解的. 但如果声明注解时指定了 @Documented,则它会被 javadoc 之类的工具处理, 所以注解类型信息也会被包括在生成的文档中.(个人观点:不是重点,了解即可。勿喷)
Target注解
@Target说明了Annotation所修饰的对象范围:Annotation可被用于 packages、types(类、接口、枚举、Annotation类型)、类型成员(方法、构造方法、成员变量、枚举值)、方法参数和本地变量(如循环变量、catch参数)。在Annotation类型的声明中使用了target可更加明晰其修饰的目标。
作用:用于描述注解的使用范围(即:被描述的注解可以用在什么地方)
取值(ElementType)有:
1.CONSTRUCTOR:用于描述构造器
2.FIELD:用于描述域
3.LOCAL_VARIABLE:用于描述局部变量
4.METHOD:用于描述方法
5.PACKAGE:用于描述包
6.PARAMETER:用于描述参数
7.TYPE:用于描述类、接口(包括注解类型) 或enum声明
Inherited 注解
这是一个稍微复杂的注解类型. 它指明被注解的类会自动继承. 更具体地说,如果定义注解时使用了 @Inherited 标记,然后用定义的注解来标注另一个父类, 父类又有一个子类(subclass),则父类的所有属性将被继承到它的子类中.
ps:总结自各大神
- Java注解之Retention、Documented、Target介绍
- Java注解之Retention、Documented、Target介绍
- Java注解之Retention、Documented、Inherited介绍
- Java注解之Retention、Documented、Inherited介绍
- Java注解之Retention、Documented、Inherited介绍
- Java注解之Retention、Documented、Inherited介绍
- Java注解之Retention、Documented、Inherited介绍
- Java注解之Retention、Documented、Inherited介绍
- Java注解之Retention、Documented、Inherited介绍
- Java注解之Retention、Documented、Inherited介绍
- Java注解之Retention、Documented、Inherited介绍
- Java注解之Documented Retention Target Inherited 自定义注解
- JAVA自定义注解(Target,Retention,Documented,Inherit)
- Java注解@Retention&@Inherited@Target@IntDef@Documented
- JAVA自定义注解(Target,Retention,Documented,Inherit)
- JAVA元注解@interface详解(@Target,@Documented,@Retention,@Inherited)。
- Java注解之Retention、Documented、Inherited的简单使用
- JAVA自定义注释(Target,Retention,Documented,Inherit)
- [学习笔记02]条件、循环、数组
- BZOJ 3747: [POI2015]Kinoman
- 笔试面试算法经典--最长连续序列
- Node.js系列——(1)安装配置与基本使用
- 论文笔记:Histology Image Classification using Supervised Classification and Multimodal Fusion
- Java注解之Retention、Documented、Target介绍
- Python-matplotlib常用函数
- 欢迎使用CSDN-markdown编辑器
- 动态规划练习21:三角形最佳路径问题
- TwinklingRefreshLayout 支持下拉刷新和上拉加载的 RefreshLayout,自带越界回弹效果,支持 RecyclerView,AbsListView,ScrollView等
- Java学习【知识点及代码7】
- android studio 运行出现Error:(1, 1) 错误: 非法字符: '\ufeff'
- QT的信号和槽函数(非QT designer设计)
- 深入分析volatile的实现原理