Java中注解解读和元注解—— @Retention @Target @Document @Inherited

什么是注解:

  注解类型属于一种Java类型,它用@interface关键字来声明。

注解类中的类体为空时,被称为“标示性注解(Marked Annotation)”

public @interface Test{}

还可以定义一些成员,下面就是有一个名为value的成员和一个Class类型的成员默认值为void.class

public @interface Test{
   String value() default "";
   Class type default void.class;
}

成员的可选类型包括:String(字符串类型)、Class(类类型)、primitive(基本类型)、enumerated(枚举类型)和annotation(注解类型),还有这些类型的数组类型,eg:String[]、Class[]

java中元注解(Jdk内置的注解类型)java.lang.annotation包中

主要有四个: @Retention @Target @Document @Inherited

@Target:注解的作用目标,可选值是从java.lang.annotation.ElementType枚举类的枚举常量来表示        
        @Target({ElementType.TYPE})                                  //适用于接口、类、枚举、注解
        @Target({ElementType.FIELD})                                 //适用于字段、枚举的常量
        @Target({ElementType.METHOD})                                //适用于方法
        @Target({ElementType.PARAMETER})                             //适用于方法参数
        @Target({ElementType.CONSTRUCTOR})                           //适用于构造函数
        @Target({ElementType.LOCAL_VARIABLE})                        //适用于局部变量
        @Target({ElementType.ANNOTATION_TYPE})                       //适用于注解
        @Target({ElementType.PACKAGE})                               //适用于包 

@Retention:注解的保留位置

    @Retention(RetentionPolicy.SOURCE) //注解仅存在于源码中,在class字节码文件中不包含
    @Retention(RetentionPolicy.CLASS) // 默认的保留策略,注解会在class字节码文件中存在,但运行时无法获得,
    @Retention(RetentionPolicy.RUNTIME) // 注解会在class字节码文件中存在,在运行时可以通过反射获取到
@Inherited:说明子类可以继承父类中的该注解

@Document:说明该注解将被包含在javadoc中

使用注解机制的步骤:

1、自定义一个annotation注解类型

2、在类的源码中中庸注解类型

3、在程序中运用反射机制读取类的注解信息

《java面向对象编程》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值