美文网首页
Java基础-注解

Java基础-注解

作者: Java小工匠 | 来源:发表于2017-06-02 11:57 被阅读0次

    一、Annotation的概念

      Annotion(注解)是一个接口,程序可以通过反射来获取指定程序元素的Annotion对象,然后通过Annotion对象来获取注解里面的元数据。

    二、Annotation的作用

    (1)生成文档 : 可以为类、方法等生成特定的java doc。
    (2)编译处理 :在编译的时候,可以用注解处理器,对其中的源代码进行处理。
    (3)运行控制:可以在运行时标注类、方法等,用反射的方式达到特殊的流程控制等目的。

    三、JDK元注解

    (1)@Documented
    @Documented Annotation的作用生成Javadoc时包含该注解。
    (2)@Retention
    @Retention Annotation的作用是标注注解的生命周期,取值RetentionPolicy 枚举。

    public enum RetentionPolicy {
        //注解生存周期是Java的原文件,例如 Override 
        SOURCE,
       //注解生存周期是Java的Class文件。底层开发人员使用,用于根据Class文件生成其他文件。
        CLASS,
      //注解生存周期是Java的运行时。
        RUNTIME
    }
    

    (3)@Target
    @Target Annotation的作用是说明注解的作用对象,取值

    public enum ElementType {
        //类、注解、枚举
        TYPE,
        //字段、枚举值
        FIELD,
        //方法
        METHOD,
        //参数
        PARAMETER,
        //构造函数
        CONSTRUCTOR,
        //局部变量
        LOCAL_VARIABLE,
        //注解
        ANNOTATION_TYPE,
        //包
        PACKAGE,
        //类型变量的声明语句
        TYPE_PARAMETER,
        //类型的任何语句
        TYPE_USE
    }
    

    (4)@Inherited
      @Inherited Annotation的作用是如果被@Inherited标注的注解,在类上面使用时,子类会自动继承此注解,否则的话,子类不会继承此注解。

    四、JDK内置注解

    (1)@Override
    用于修饰此方法覆盖了父类的方法。
    **(2)@Deprecated **
    用于标记修饰对象已经过时。
    (3)@SuppressWarnnings 抑制编译器警告

    名称 说明
    1.deprecation 使用了不赞成使用的类或方法时的警告
    2.unchecked 执行了未检查的转换时的警告,例如当使用集合时没有用泛型 (Generics) 来指定集合保存的类型
    3.fallthrough 当 Switch 程序块直接通往下一种情况而没有 Break 时的警告
    4.path 在类路径、源文件路径等中有不存在的路径时的警告
    5.serial 当在可序列化的类上缺少 serialVersionUID 定义时的警告
    6.finally 何 finally 子句不能正常完成时的警告
    7.unused 代码中的变量或方法没有被使用产生的警告
    8.rawtypes 使用泛型时没有指定类型的警告
    9.all 关于以上所有情况的警告

    五、自定义Annotation

    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;
    //设置是否使用在Javadoc中
    @Documented
    //设置生命周期
    @Retention(RetentionPolicy.RUNTIME)
    //设置作用对象
    @Target(ElementType.TYPE)
    public @interface 注解名称 {
            //根据需要编写成员方法
    }
    
    

    相关文章

      网友评论

          本文标题:Java基础-注解

          本文链接:https://www.haomeiwen.com/subject/qfayfxtx.html