目录
注解简介
注解详解
注解简介
(1)
Java 注解用于为 Java 代码提供元数据。
注解本质其实就是一个继承了annotation接口的接口而已(The common interface extended by all annotation types.)。以@SpringBootApplication注解为例,其是这样的:public @interface SpringBootApplication {}。
注解与Java中的类、接口、枚举类所在同一个层次,其所用的修饰符为@interface。
(2)
注解可以在package、class、method、filed等上使用。如我们常使用的“@Controller”(一般用在class)、“@ResponseBody”(一般用在method上)。
注解详解
| 注解分类 |
注解名称 |
作用 |
备注 |
| 内置注解 |
@Override |
检查该方法是否是重写方法。若是发现其父类,或者是引用的接口中并没有该方法时,会报编译错误。 |
|
| @Deprecated |
标记过时方法。如果使用该方法,会报编译警告。 |
|
|
| @SuppressWarnings |
指示编译器去忽略注解中声明的警告。 |
|
|
| @SafeVarargs |
忽略任何使用参数为泛型变量的方法或构造函数调用产生的警告。 |
|
|
| @FunctionalInterface |
标识一个匿名函数或函数式接口。 |
|
|
| @Repeatable |
标识某注解可以在同一个声明上使用多次。 |
|
|
| 元注解 |
@Retention |
标识这个注解的生命周期 |
元注解其实就是注解自定义的注解 |
| @Documented |
标记这些注解是否包含在用户文档中。 |
||
| @Target |
标记这个注解的作用目标 |
||
| @Inherited |
标记这个注解是继承于哪个注解类(默认注解并没有继承于任何子类) |
(1)@Target注解
@Target注解用来标记注解的作用目标。其作用目标有以下几种:
ElementType.TYPE:允许被修饰的注解作用在类、接口和枚举上。
ElementType.FIELD:允许作用在属性字段上。
ElementType.METHOD:允许作用在方法上。
ElementType.PARAMETER:允许作用在方法参数上。
ElementType.CONSTRUCTOR:允许作用在构造器上。
ElementType.LOCAL_VARIABLE:允许作用在本地局部变量上。
ElementType.ANNOTATION_TYPE:允许作用在注解上。
ElementType.PACKAGE:允许作用在包上。
如果想让自己的注解对什么生效,就使用ElementType中的指定类型即可。
(2)Retention注解
@Retention注解用来标记注解的生命周期,其生命周期有下列几种:
RetentionPolicy.SOURCE:当前注解编译期可见,不会写入 class 文件。
RetentionPolicy.CLASS:类加载阶段丢弃,会写入 class 文件。
RetentionPolicy.RUNTIME:永久保存,可以反射获取。
(3)@Documented注解
@Documented注解标记该注解是否会出现在javadoc文档中。若是没有定义@Documented注解,则注解不会出现在javadoc中。
(4)@Inherited注解
@Inherited注解修饰一个父类时,如果其子类没有被其他注解修饰,则表示其子类继承了其注解。