美文网首页
注解的概述以及基本注解类型

注解的概述以及基本注解类型

作者: 薛云龙 | 来源:发表于2017-03-20 10:18 被阅读21次

注解(Annotation):在JDK1.5之后增加的一个新特性

现实中,Hibernate、Spring等框架中都大量使用注解。注解作为程序的元数据嵌入到程序。注解可以被解析工具或编译工具解析,此处注意注解不同于注释(comment)。当一个接口直接继承java.lang.annotation.Annotation接口时,仍是接口,而并非注解。要想自定义注解类型,只能通过@interface关键字的方式,其实通过该方式会隐含地继承.Annotation接口。

基本的注解类型

Documented:表示含有该注解类型的元素(带有注释的)会通过javadoc或者类似的工具进行文档话。该类型应用于注解那些影响客户使用带注释的元素声明的类型。如果类型声明是用的Documented来注解,这种类型的注解被作为被标注的程序成员的公共API

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.ANNOTATION_TYPE)
public @interface Documented {
}

Inherited:表示该注解类型被自动继承,如果用户在当前类中查询这个元注解类型并且当前类的声明中不包含这个元注解类型,那么也将自动查询当前类的父类是否存在Inherited元注解,这个动作将被重复执行知道这个标注类型被找到,或者是查询到顶层的父类。

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.ANNOTATION_TYPE)
public @interface Inherited {
}

Retention:表示该注解类型的注解保留的时长。当注解类型声明中没有@Retention元注解,则默认保留策略为RetentionPolicy.CLASS。关于保留策略(RetentionPolicy)是枚举类型,共定义3种保留策略
Source:仅保存在java源文件,经过编译器后便丢弃相应的注解
Class:存在java源文件,以及经编译器后生成的Class字节吗文件,但在运行时VM不再保留注释
Runtime:存在源文件、编译生成的Class字节码文件,以及保留在运行时VM中,可通过反射性地读取注解

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.ANNOTATION_TYPE)
public @interface Retention {
    RetentionPolicy value();
}
上面源码@Retention的定义中有一行@Retention(RetentionPolicy.RUNTIME),意思是指当前注解的保留策略为RUNTIME,即存在Java源文件,也存在经过编译器编译后的生成的Class字节码文件,同时在运行时虚拟机(VM)中也保留该注解,可通过反射机制获取当前注解内容。

Target:表示该注解类型的所使用的程序元素类型。当注解类型声明中没有@Target元注解,则默认为可适用所有的程序元素。如果存在指定的@Target元注解,则编译器强制实施相应的使用限制。关于程序元素(ElementType)是枚举类型,共定义8种程序元素:ANNOTATION_TYPE——注解类型声明,CONSTRUCTOR——构造方法声明,LOCAL_VARIABLE—— 局部变量声明,METHOD——方法声明,PACKAGE——包声明,PARAMETER——参数声明,TYPE——类、接口(包括注解类型)或枚举声明

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.ANNOTATION_TYPE)
public @interface Target {
    ElementType[] value();
}

相关文章

  • 注解的概述以及基本注解类型

    注解(Annotation):在JDK1.5之后增加的一个新特性 现实中,Hibernate、Spring等框架中...

  • Kotlin 注解与反射摘要

    声明并应用注解 注解只能拥有如下类型的参数:基本数据类型、字符串、枚举、类引用、其他的注解类,以及前面这些类型的数...

  • 注解

    注解实现原理 底层使用反射实现。申明注解类需要加 @interface 注解类里只支持基本类型、String以及枚...

  • 注解Annotation--java26(02/19/2016)

    主要内容 JDK内置的基本注解类型(3个)自定义注解类型对注解进行注解(4个)利用反射获取注解信息(在反射部分涉及...

  • java 注解

    运行时的注解如何被处理的 [举例] java虚拟机运行api反射机制运行注解 注解语法 注解元素类型. 基本类型....

  • spring boot + 自定义注解实现全局业务逻辑

    注解基本知识 注解数据类型 注解是写在.java文件中,使用@interface作为关键字, 所以注解也是Java...

  • 注解与反射

    注解 声明一个注解类型 元注解 在定义注解时,注解类也能够使用其他的注解声明。对注解类型进行注解的注解类,我们称之...

  • 注解

    目录 注解概述 内置注解 元注解 自定义注解 1 注解概述 作用 不是程序本身,可对程序作出解释 可别其他程序读取...

  • 注解 - 类型注解、重复注解、一些限制

    类型注解 原来注解只能用于声明,从JDK 8开始,注解还可以用于大多数使用类型的地方,这种注解称为类型注解。类型注...

  • Java注解用法

    注解元素的提供值必须是编译时常量表达式,不能使用null作为注解中任何类型元素的值。 基本类型注解类型中的元素的数...

网友评论

      本文标题:注解的概述以及基本注解类型

      本文链接:https://www.haomeiwen.com/subject/qosbnttx.html