Java注解之Retention、Documented、Target介绍

先看代码,后面一个个来解析:

@Retention(RetentionPolicy.RUNTIME)
@Target(value = {ElementType.METHOD, ElementType.TYPE})
@Documented
public @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),则父类的所有属性将被继承到它的子类中.

原文地址:https://www.cnblogs.com/qlqwjy/p/8516551.html

时间: 2024-10-25 20:20:20

Java注解之Retention、Documented、Target介绍的相关文章

Java注解之Retention、Documented、Inherited、target介绍

Retention注解---(retention 的翻译 保留) Retention(保留)注解说明,这种类型的注解会被保留到那个阶段. 有三个值:1.RetentionPolicy.SOURCE -- 这种类型的Annotations只在源代码级别保留,编译时就会被忽略2.RetentionPolicy.CLASS -- 这种类型的Annotations编译时被保留,在class文件中存在,但JVM将会忽略3.RetentionPolicy.RUNTIME -- 这种类型的Annotation

Java注解 看这一篇就够了

注解 1.概念 注解:说明程序的.给计算机看的 注释:用文字描述程序的.给程序员看的 注解的定义:注解(Annotation),也叫元数据.一种代码级别的说明.它是JDK1.5及以后版本引入的一个特性,与类.接口.枚举是在同一个层次.它可以声明在包.类.字段.方法.局部变量.方法参数等的前面,用来对这些元素进行说明,注释. 2.作用 ①编写文档:通过代码里标识的注解生成文档[生成文档doc文档]: ? shift+右键 -> 在此处打开Powershell窗口 -> 输入:javadoc .\

自定义java注解(三) 实现Junit中的@Test、@Before、@After

前面两次的自定义注解,都只是解析了一个注解,今天要讲的junit需要三个注解,而且解析框架中反射激活方法时要根据Before.Test.After的顺序来执行,需要注意的是Test注解可能会有多个,所以我们在外面定义一个数组,用来存储所有由@Test标注的方法.下面来看一下具体实现 三个注解的定义 @Documented @Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) @Inherited public @inter

Java注解介绍

原文链接: Java Annotations: An Introduction原文日期: 2005年10月14日翻译日期: 2014年07月20日翻译人员: 铁锚 翻译完后,感觉这篇文章是不是在http://www.developer.com被挖坟了? Java注解介绍 基于注解(Annotation-based)的Java开发无疑是最新的开发趋势.[译者注: 这是05年的文章,在2014年,毫无疑问,多人合作的开发,使用注解变成很好的合作方式,相互之间的影响和耦合可以很低]. 基于注解的开发将

<Java> java注解介绍

前言 在刚学java web开发的时候,我第一次看到注解不是在java里,而是在spring里,于是很长一段时间里,我都认为注解是spring特有的技术,后来用到mybatis的时候,发现也有不少注解,再加上经常在java中看到的@Override之类的,才怀疑注解是不是java的东西.可是怀疑归怀疑,但是开发都快一年多了,从来没有想过去了解注解这个东西,更别说开发自己的注解了. Java注解介绍 近来,项目中有许多额外的xml文件,我一直认为这是非常不好的,联想到spring可以将applic

转:java 注解 @Retention @interface 元数据

原文: http://www.cnblogs.com/coolgun/p/3802535.html java注解 即是注释了,百度解释:也叫元数据.一种代码级别的说明. 个人理解:就是内容可以被代码理解的注释,一般是一个类. 元数据 也叫元注解,是放在被定义的一个注解类的前面 ,是对注解一种限制.只有两个: @Retention 和 @Target  (我只查到这两个). @Retention :用来说明该注解类的生命周期.它有以下三个参数: RetentionPolicy.SOURCE  :

java注解(Annotation)的简单介绍

注解你可以理解为一个特殊的类,或者接口其自定义个格式形如 public @interface 注解名(){ //注解的属性,特别提醒当注解的属性为value时,在对其赋值时,可以不写value,而直接写上值即可. } 下面一个例子讲述了注解的基本应用:(这个例子中A代表一个注解类,写一个D注解的目的是说明一个注解类中可以有注解这个属性.B代表应用了注解类的类,C代表对应用了注解类的类进行反射操作的类.) 代码如下://定义一个注解D(D的作用只是为了说明A中可以有一个注解的属性) package

java 注解@Retention @interface 元数据

原文  http://www.cnblogs.com/coolgun/p/3802535.html java注解 即是注释了,百度解释:也叫元数据.一种代码级别的说明. 个人理解:就是内容可以被代码理解的注释,一般是一个类. 元数据 也叫元注解,是放在被定义的一个注解类的前面 ,是对注解一种限制.只有两个: @Retention 和 @Target  (我只查到这两个). @Retention :用来说明该注解类的生命周期.它有以下三个参数: RetentionPolicy.SOURCE  :

19.Java 注解

19.Java注解 1.Java内置注解----注解代码 @Deprecated                                    //不推荐使用的过时方法 @Deprecated public void badMethod(){ System.out.println("I am a old function"); } @Override                                        //必须是覆盖父类(接口)的函数 @Overrid