如何写一个自定义注解

元注解: 就是定义注解所用的注解, 在 java.lang.annotation 中可找到

    @Target: 定义注解修饰的范围,例如类、方法、变量等

    @Retention: 定义注解的生命周期, 例如 编译、运行时等

    @Documented: 声明注解,应当被文档化,

    @Inherited: 定义注解是否会被继承

 

元注解的取值:

  @Target 取值:

    1、CONSTRUCTOR :用于描述构造器

    2、FIELD :用于描述域,字段定义,包括enum常量

    3、LOCAL_VARIABLE :用于描述局部变量

    4、METHOD : 用于描述方法

    5、PACKAGE : 用于描述包

    6、PARAMETER :用于描述参数

    7、TYPE : 用于描述类、接口(包括注解类型)、 枚举

    8、 如果无值: 可用在任何地方

    jdk1.8 后新增: TYPE_PARAMETER  参数类型

           TYPE_USE    类型的使用

  @Retention取值:

    1、SOURCE : 只在源文件保留

    2、CLASS :  在class 文件中保留

    3、RUNTIME : 在运行时保留

  @Documented 无值  

  @Inherited 无值 

 

示例, 以spirng的@Component 注解为例

package org.springframework.stereotype;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Indexed //此为自定义的注解
//该注解不支持继承,故没有@Inherited
public @interface Component { String value() default ""; }

 

posted @ 2021-09-12 17:25  长弓射大狗  阅读(147)  评论(0)    收藏  举报