← 返回首页
Java注解的作用域
注解的作用域(Scope)指的是注解可以应用在哪些程序元素上,由元注解 @Target 配合 ElementType 枚举来指定。在 Java 21 中,ElementType 共有 12 种取值:
TYPE:类、接口、枚举、注解类型FIELD:字段(包括枚举常量)METHOD:方法PARAMETER:方法或构造器的参数CONSTRUCTOR:构造方法LOCAL_VARIABLE:局部变量ANNOTATION_TYPE:注解类型本身(即元注解)PACKAGE:包(写在package-info.java中)TYPE_PARAMETER:类型参数声明(Java 8 新增,用于泛型形参上)TYPE_USE:任何使用类型的地方(Java 8 新增,常用于配合 Checker Framework 做类型检查)MODULE:模块(Java 9 模块系统引入)RECORD_COMPONENT:记录类组件(Java 16 引入 record 时新增)
其中最常用的是 TYPE、FIELD、METHOD、PARAMETER 这几种。如果定义注解时不显式指定 @Target,那么该注解默认可以用于上述除 TYPE_PARAMETER 和 TYPE_USE 之外的所有位置。