美文网首页
Java注解备忘

Java注解备忘

作者: 静水红阳 | 来源:发表于2021-12-27 00:03 被阅读0次

基本概念

注解,Annotation,是在JDK 1.5 及后续版本引入的一个特性,可以声明在类,字段,方法等前面,用来对这些元素进行说明和注释。

一、元注解

Java中定义了一些元注解,用来对其他annotation进行说明,主要包括有如下四个:

  • @Target
  • @Retention
  • @Documented
  • @Inherited

下面我们对每一个元注解的作用及常用参数进行说明。

1. @Target

该元注解用来描述注解的使用范围,即被标识的注解能够用在什么地方。常用的取值如下:

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

2. @Retention

该元注解用来定义Annotation的保留时长

某些Annotation仅出现在源代码中,而被编译器丢弃;而一部分Annotation会被编译在class文件中。

常用的取值如下:

  • SOURCE:在源文件中有效(源文件保留),当Java文件编译成class文件时,注解被丢弃。
  • CLASS:在class文件中有效(class保留),当class文件被加载时丢弃。
  • RUNTIME:在运行时有效(运行时保留)

显然生命周期长度:SOURCE < CLASS < RUNTIME。

生命周期选择

对于注解生命周期的选择可以参考如下使用:

  1. 如果需要在运行时去动态获取注解信息,则只能使用RUNTIME
  2. 如果是需要在编译时进行一些预处理操作(如本文的APT),则可以选择使用CLASS
  3. 如果只是做一些检查性的操作,如@Override 和@SuppressWarnings,则可以使用SOURCE。

3. @Documented

此元注解表明这个注解应该被 javadoc工具记录.

默认情况下,javadoc是不包括注解的.

但如果声明注解时指定了 @Documented,则它会被 javadoc 之类的工具处理, 所以注解类型信息也会被包括在生成的文档中,是一个标记注解,没有成员。

4. @Inherited

@Inherited 元注解是一个标记注解,阐述了某个被标注的类型是被继承的。

如果一个使用了@Inherited修饰的annotation类型被用于一个class,则这个annotation将被用于该class的子类。

效果
  • 类继承关系中@Inherited的作用

    类继承关系中,子类会继承父类使用的注解中被@Inherited修饰的注解

  • 接口继承关系中@Inherited的作用

    接口继承关系中,子接口不会继承父接口中的任何注解,不管父接口中使用的注解有没有被@Inherited修饰

  • 类实现接口关系中@Inherited的作用

    类实现接口时不会继承任何接口中定义的注解

二、自定义注解

自定义注解可以使用@interface来处理,用来自动继承java.lang.annotation.Annotation接口,由编译程序自动完成其他细节,代码格式如下:

元注解
public @interface 注解名 {
    定义体
}

注解参数的可支持数据类型:

  1. 所有基本数据类型(int,float,boolean,byte,double,char,long,short)
  2. String类型
  3. Class类型
  4. enum类型
  5. Annotation类型
  6. 以上所有类型的数组
Annotation类型的参数设置

参数可以遵循如下使用:

  1. 只能使用public或者默认default这两个访问权限修饰
  2. 参数成员只能用基本类型
  • byte
  • short
  • char
  • int
  • long
  • float
  • double
  • boolean
  • String,Enum,Class,annotations等数据类型
  1. 如果只有一个参数成员,最好把参数名称设为"value",后加小括号.

定义了注解之后需要生成注解处理器来对注解进行处理,如采用APT技术。

相关文章

  • Java注解备忘

    基本概念 注解,Annotation,是在JDK 1.5 及后续版本引入的一个特性,可以声明在类,字段,方法等前面...

  • 菜鸟学服务端技术----Spirng基础

    注解 Java基础加强总结(一)——注解(Annotation) java中的注解是如何工作的? java 注解 ...

  • java常用注解备忘(更新ing)

    JAVA @Resource @Override @SuppressWarnings SpringMVC @Rep...

  • 自定义注解

    java annotation基础 java注解分为标准注解和元注解。 标准注解是java为我们提供的预定义的注解...

  • Java注解的使用

    Java注解的使用 参考 廖雪峰java教程 使用注解 什么是注解(Annotation)?注解是放在Java源码...

  • Java原生注解和Spring注解的说明

    注解 java 原生注解 Spring 中的注解 一 Java原生注解 Java注解是在JDK1.5以后引入的新特...

  • Java 注解

    JAVA注解 Java 自带注解(系统注解) @Override 表示重写注解 @Deprecated 表示过时的...

  • 1.8 Java 注解annotation

    1.1 注解声明 Java注解Annotation,有声明注解和元注解 元注解:Java提供的元注解,所谓元注解就...

  • Java注解学习总结(脑图)

    注解的提取测试:定义注解: 测试注解提取: 参考:《Java编程思想》java注解

  • Java注解

    Java注解(Annotation)详解(一)——概述及JDK自带注解 Java注解(Annotation)详解(...

网友评论

      本文标题:Java注解备忘

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