14-注解

nobility 发布于 2021-03-25 932 次阅读


注解

系统内置注解

注解名 描述
@Override 方法重写检查
@Deprecated 方法过时标注
@SupperessWarnings("all") 压制全部警告,也可有其他参数
@FunctionalInterface 函数式接口检查,有且只能有一个抽象方法

自定义注解

注解本质是一个接口,默认继承Annotation接口

定义格式和使用要求

元注解
[public] @interface 注解名称{
  数据类型 属性名称() [defaule 默认值];
  //定义要求
  //属性的数据类型只能是基本数据类型、String、枚举、注解和他们的数组形式
  //属性名后需要加括号
  
  //使用要求,@注解名(属性名称=要赋的值)
  //default可以选择性的为该属性赋值,若不为该属性赋值则使用后面的默认值
  //若只有一个需要赋值的属性,并且属性名是value,则value可以省略,直接写要赋的值即可
  //数据类型是数组时使用大括号包裹,若数组只有一个值大括号可以省略
  ...
}

元注解

@Target

描述注解可以使用的位置,若不声明该元注解则可以使用于任何位置,参数是ElementType枚举类中的属性数组

参数 描述
ANNOTATION_TYPE 只能用于注释
TYPE 只能用于类、接口、枚举类上
FIELD 只能用于属性声明上
METHOD 只能用于方法声明上
PARAMETER 只能用于参数声明上
CONSTRUCTOR 只能用于构造方法声明上
PACKAGE 只能用于包声明上
@Retention

描述注解被保留的阶段,参数是RetentionPolicy枚举类属性

参数 描述
SOURCE 只能保留到Java文件中
CLASS 只能保留到class文件中
RUNTIME 可以被加载到jvm中
@Inherited

描述注解是否可以被子类继承,默认情况下注解是不能被子类继承的,若想要子类继承则声明该元注解

@Documented

描述注解是否可以被抽离到javadoc文档中,默认情况下是不会在文档中显示的,若声明该注解则会在文档中显示

此作者没有提供个人介绍
最后更新于 2021-03-25