元注解

本文详细介绍了Java中的元注解,包括@Documented、@Retention、@Target和@Inherited的作用及用法。解释了不同RetentionPolicy的区别及其应用场景,并探讨了如何通过@Target限制注解的使用范围。

元注解

  就是只能用来注释普通注解的注解,不能直接注解代码。

    Java5时支持5中注解  @Dcocumented  @Retention  @Target  @Inherited

   @Documented

    被修饰的注解能够自动加入到javadoc中

    @Retention

    用来设置注解的级别

    @Retention(RetentionPolicy.CLASS)

    RetentionPolicy是enum类型的

    有三个级别

    RetentionPolicy.CLASS

        CLASS代表字节码级别的,注解从在于源码和自己吗文件中,

    RetentionPolicy.SOURCE

        代表源码级别的,只能存在于源码中,主要功能用于和与编译器交互和代码检测。@Override,@SuppressWarings,这个级别的框架额外效率损耗发生在编译时。

    RetentionPolicy.RUNTIME

        Runtime代表运行时级别,注解存在于源码,字节码,java虚拟机中,主要用于运行时反射获取相关的信息,这个级别的框架额外的效率损耗发生在程序运行时。

 

    @Target

    不加元注解@Target的情况下,注解可以修饰多种元素,类,属性,方法等。要是想限定注解的使用范围需要加入@Target注解

    @Target(ElementType.METHOD)

    ElementType.ANNOTATION_TYPE

            能修饰注解

    ElementType.CONSTRUCTOR

            能修饰构造器

    ElementType.FIELD

            能修饰成员变量

    ElementType.LOCAL_VARIABLE

            能够修饰局部变量

    ElementType.METHOD

            能够修饰方法

    ElementType.PACKAGE

            能够修饰包

    ElementType.PARAMETER

            能够修饰参数

    ElementType.TYPE

            能够修饰类,接口,枚举类型  

 

    可以是多个

    @Target({ElementType.TYPE,ElementType.FIELD})

    可以是单个

    @Target(ElementType.TYPE)

   @Inherited

    让注解可以被继承,但不是真正的继承。通过使用@Inherited,只可以让子类的类对象使用getAnnotations()反射获取父类被@Inherited修饰的注解

 

转载于:https://www.cnblogs.com/zhyonk/p/6209920.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值