简介

An annotation is a form of metadata, that can be added to Java source code. Classes, methods, variables, parameters and packages may be annotated. Annotations have no direct effect on the operation of the code they annotate.

能够添加到 Java 源代码的语法元数据。类、方法、变量、参数、包都可以被注解,可用来将信息元数据与程序元素进行关联。Annotation 中文常译为“注解”。

Meta Annotation(元注解)

创建新注解时需要的注解
@Target 表示该注解可以用于什么地方:
TYPE:类、接口、注解类型、enum 声明
FIELD:域声明
METHOD:方法声明
PACKAGE:包声明
PARAMETER:参数声明
CONSTRUCTOR:构造器的声明
LOCAL_VARIABLE:局部变量声明
@Retention 表示需要在什么级别保存该注解信息:
CLASS:注解在 class 文件中可用,但会被 VM 丢弃
SOURCE:注解将被编译器丢弃
RUNTIME:VM 将在运行期间保留注解,因此可以通过反射机制读取注解的信息。
@Document 将注解包含在 Javadoc 中
@Inherited 允许子类继承父类中的注解

标准 Annotation

Jdk 自带的注解
@Override 表示当前的方法定义将覆盖超类中的方法。
@Deprecated 使用了注解为它的元素编译器将发出警告,因为注解@Deprecated 是不赞成使用的代码,被弃用的代码。
@SuppressWarnings 关闭不当编译器警告信息。

自定义 Annotation

1
2
3
4
5
6
7
8
9
10
11
12
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
@Inherited
public @interface MethodInfo {

String author() default "admin@gmail.com";

String date();

int version() default 1;
}

读取注解

@Retention(RetentionPolicy.SCORCE)

主要用于源码标记,比如说 JDK 自带的标准注解都是这样的。

@Retention(RetentionPolicy.CLASS)

@Retention(RetentionPolicy.RUNTIME)

更多资料

文章部分内容来源以下博客: