Java基础-注解

一、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基础-注解)