注解

注解的类型(参数个数):

1.标注注解:一个没有成员定义的annotation类型被称为标注注解。这种annotation类型仅使用自身的存在与否来为我们提供信息。

2.单值注解

3.完整注解

注解的类型(注解的用途)

1.jDK内置系统注解 2.元注解 3.自定义注解

详:

@Override 用的最多,是标记注解,表示重写父类方法。

@SuppressWarnings 抑制编译警告注解  @ Depracated 过期不推荐标记的注解

  

自定义注解:当@interface关键字用来声明一个注解,将自动继承java.lang.annotation.Annotation接口。里面的每一个方法表示声明了一个可配置的参数,方法名即位参数名。

  • 访问修饰符只能使用 public 或者 default
  • 返回值类型就是参数的类型且只能为 八种基本数据类型 、 Class 、 String 、 Enum 、Annotations类型以及上述类型所组成的 数组
  • 通过 default 关键字声明参数的默认值。
  • 如果只有一个参数成员最好命名为 value()
  • 注解元素必须有确定的值,要么在定义注解元素时默认值指定,要么使用此注解时指定。非基本类型注解元素的值不可为 null

元注解:其作用就是负责注解其他的注解。

  常用有1.@Target 2.@Retention 3.@Document 4.@Inherited

  @Target(指定所修饰对象的范围):ElementType.CONSTRUCTOR/FIELD/LOCAL_VARIABLE/METHOD/PACKAGE/PARAMETER/TYPE 分别用户描述构造器/域/局部变量/方法/包/参数/类、接口(包括注解类型)或enum声明

  @Retention(定义保留的时间长短): RetentionPoicy.SOURCE/CLASS/RUNTIME   在 源文件/class文件/运行时 有效(保留---即可通过反射)

  @Document:标记注解,标记该注解类型的元素(带有注释的)会通过javadoc或者类似工具进行文档化

  @Inherited:表示注解类型能被自动继承。 如果一个类使用了 @Inherited 类型的注解,则此类的子类也将含有该注解,当 Retention 为 RUNTIME 时通过反射API可以查询到此类以及其父类直到发现指定的annotation类型被发现,或者到达类继承结构的顶层。

原文地址:https://www.cnblogs.com/yzf666/p/6245339.html