Java注解总结

2022-05-12 09:35:27 浏览数 (1)

文章目录
  • 一、注解(Annotation)
  • 二、基本Annotation
  • 三、JDK的元Annotation

一、注解(Annotation)

  所谓注解,其实是代码里的特殊标记,这些标记可以在编译、类加载、运行时被读取,并执行 相应的处理。通过使用注解,程序开发人员可以在不改变原有逻辑的情况下,在源文件中嵌入一些补充的信息。代码分析工具、开发工具和部署工具可以通过这些补充信息进行验证或者进行部署。

二、基本Annotation

1、限定重写父类方法:@Override   @Override就是用来指定方法覆载的,它可以强制一个子类必须覆盖父类的方法。

2、标示已过时:@Deprecated   @Deprecated用于表示某个程序元素(类、方法等)已过时,当其他程序使用已过时的类、方法时,编译器将会给出警告。

3、抑制编译器警告:@Suppresswarnings   @Suppresswarnings指示被该Annotation修饰的程序元素(以及该程序元素中的所有子元素)取消显示指定的编译器警告。@Suppresswarnings会一直作用于该程序元素的所有子元素。

4、Java 7的“堆污染”警告与@SafeVarargs   当把一个不带泛型的对象赋给一个带泛型的变量时,往往就会发生这种“堆污染”。

5、Java 8的函数式接口与@Functionallnterface   如果接口中只要一个抽象方法(可以包含多个默认方法或多个static方法),该接口就是函数式接口。@Functionallnterface就是用来指定某个接口必须是函数式接口。

三、JDK的元Annotation

1、使用@Retention   @Rentention只能用于修饰Annotation定义,用于指定被修饰的Annotation可以保留多长时间,@Retention包含一个RetentionPolicy类型的value成员变量,所以使用@Retention时必须为该value成员变量指定值。 value成员变量的值只能是如下三个:   @RententionPolicy.CLASS:编译器将把Annotation记录在class文件中。当运行Java程序时,JVM不可获取Annotation信息。这是默认值。   @RententionPolicy.RUNTIME:编译器将把Annotation记录在class文件中。当运行Java程序时,JVM也可获取Annotation信息,程序可以通过反射获取该Annotation信息。   @RententionPolicy.SOURCE:Annotation只保留在源代码中,编译器直接丢弃这种Annotation。

2、使用@Target   @Target说明了Annotation所修饰的对象范围:Annotation可被用于 packages、types(类、接口、枚举、Annotation类型)、类型成员(方法、构造方法、成员变量、枚举值)、方法参数和本地变量(如循环变量、catch参数)。在Annotation类型的声明中使用了target可更加明晰其修饰的目标。

  作用:用于描述注解的使用范围(即:被描述的注解可以用在什么地方)   取值(ElementType)有:

  • CONSTRUCTOR:用于描述构造器
  • FIELD:用于描述域
  • LOCAL_VARIABLE:用于描述局部变量
  • METHOD:用于描述方法
  • PACKAGE:用于描述包
  • PARAMETER:用于描述参数
  • TYPE:用于描述类、接口(包括注解类型) 或enum声明

3、使用@Documented   @Documented用于指定被该元Annotation修饰的Annotation类被javadoc工具提取成文档,如果定义Annotation类时使用了@Documented修饰,则所有使用该Annotation修饰的程序元素的API文档中将会包含该Annotation说明。

4、使用@Inherited   @Inherited元Annotation指定被它修饰的Annotation将具有继承性——如果某个类使用了@Xxx注解修饰,则其子类将自动被@Xxx修饰。

5.使用@Repeatable(新增)   @Repeatable专门用于定义Java 8新增的重复注解。

0 人点赞