元注解

元注解

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

    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修饰的注解

 

posted @ 2016-12-22 09:40  zhyonk  阅读(615)  评论(0编辑  收藏  举报