文章摘要: 在Java中,注解(Annotation)是一种用于修饰代码的元数据,可以提供有关程序代码的信息,但不直接参与程序的执行。元注解是用于定义注解的注解。
注释
- 元注解来自
javax.annotation
@Override
- 定义在
java.lang.Override - 该注解只适用于修辞手法,表示一个方法表明打算重写基类中的另一个方法声明。
@Deprecated
- 包路径:
java.lang.Deprecated - 可以用于修饰方法、属性、类,表示不鼓励程序员使用这样的元素,通常是因为它很危险或者存在更好的选择。
@SuppressWarnings
- 包路径:
java.lang.SuppressWarnings - 用来抑制编译时的警告信息。
@Target
定义
- 用于指定注解可以应用的目标元素类型,使用范围。
- 目标元素类型指的是注解可以修饰的Java语言元素,比如类、接口、方法等。
参数
ElementType:该注解的值是一个枚举类型。
ANNOTATION_TYPE:注解类型声明CONSTRUCTOR:构造方法声明FIELD:字段声明(包括枚举常量)LOCAL_VARIABLE:局部变量声明METHOD:方法声明PACKAGE:包声明PARAMETER:参数声明TYPE:类、接口(包括注解类型)或枚举声明
案例
import java.lang.annotation.ElementType;
import java.lang.annotation.Target;
@Target({ElementType.TYPE})
public class Test {
}
@Retention
定义
- 用于指定注解的信息保留到什么阶段。它控制注解的生命周期。
参数
RetentionPolicy:该注解的值是一个枚举类型 RetentionPolicy。它包括以下几种:
SOURCE:注解只保留在源代码中,编译器会忽略。CLASS:注解在编译时被保留在.class文件中,但不会被加载到JVM中。RUNTIME:注解会被加载到JVM中,因此在运行时可以反射性地读取。
案例
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@Retention(RetentionPolicy.RUNTIME)
public class Test {
}
@Documented
定义
- 用于表明注解应该被 javadoc 工具记录。
- 如果一个注解被
@Documented标记,那么它的注解信息会被包含在生成的文档中。
参数
- 无
案例
import java.lang.annotation.Documented;
@Documented
public class Test {
}
@Inherited
定义
- 用于表明注解类型是可以被继承的。
- 如果一个注解被
@Inherited标记,并且该注解被用于一个类,那么这个注解也会被用于该类的子类。
参数
- 无
案例
import java.lang.annotation.Inherited;
@Inherited
public class Test {
}