元注解及注解的自定义

可紊 提交于 2021-01-07 02:20:43

Annotation(注解)是JDK5.0及以后版本引入的。它的作用是修饰编程元素。什么是编程元素呢?例如:包、类、构造方法、方法、成员变量等。

元注解就是修饰注解的注解

注解是JDK 5.0推出来的,这部分JDK源码的作者是:Joshua Bloch(《Effective Java》的作者)。

注解的定义

(1)以@interface关键字定义
(2)注解包含成员,成员以无参数的方法的形式被声明。其方法名和返回值定义了该成员的名字和类型。
(3)成员赋值是通过@Annotation(name=value)的形式。
(4)注解需要标明注解的生命周期,注解的修饰目标等信息,这些信息是通过元注解实现。

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

分析:

    元注解@Documented    

                Documented 注解表明这个注解应该被 javadoc工具记录. 默认情况下,javadoc是不包括注解的.

    元注解@Retention定义注解的生命周期,成员value的值为RetentionPolicy.RUNTIME。

                RetentionPolicy.RUNTIME    被编译器写在class文件中,jvm载入。

                RetentionPolicy.CLASS    被编译器写在class文件中,jvm加载的时候抛掉。默认声明周期。

                RetentionPolicy.SOURCE    保留在源文件,编译过程中被编译器直接抛掉。

    元注解@Target(ElementType.ANNOTATION_TYPE)    拥有这个注解的注解,就是元注解。

                (1)TYPE:指的是在类,接口(包括注解)或者enum上使用的注解。
                (2)FIELD:指的在field属性,也包括enum常量使用的注解。
                (3)METHOD:指的是在方法声明上使用的注解。
                (4)PARAMETER:指的是在参数上使用的注解,
                (5)CONSTRUCTOR: 指的是在构造器使用的注解。
                (6)LOCAL_VARIABLE:指的是在局部变量上使用的注解。
                (7)ANNOTATION_TYPE:指的是在注解上使用的元注解
                (8)PACKAGE:指的是在包上使用的注解。

    成员名称为value,类型为ElementType[]。

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!