Hutool Hutool
(opens new window)
🏡首页
📖指南
🎢最佳实践
💖支持
💡javaDoc (opens new window)
⏳更新记录 (opens new window)
  • 🍎gitee (opens new window)
  • 🍏github (opens new window)
(opens new window)
🏡首页
📖指南
🎢最佳实践
💖支持
💡javaDoc (opens new window)
⏳更新记录 (opens new window)
  • 🍎gitee (opens new window)
  • 🍏github (opens new window)
  • 快速入门

  • 核心(hutool-core)

    • AI(Hutool-ai)

    • 注解(annotation)

      • 简介
        • 📚简介
          • 注解定义
          • 注解作用
          • 注解保留阶段(@Retention)
          • 注解作用域(@Target)
          • 注解的继承(@Inherited)
          • Hutool的封装
      • 注解工具-AnnotationUtil
      • 层级注解工具-AnnotatedElementUtil
    • 数组(array)

    • JavaBean(bean)

    • 缓存(cache)

    • 类加载器(classloader)

    • 编码解码(codec)

    • 集合(collection)

    • 比较器(comparator)

    • 压缩(compress)

    • 类型转换(convert)

    • 数据(data)

    • 日期时间(date)

    • 异常(exception)

    • 函数(func)

    • IO流(io)

    • 语言特性(lang)

    • Map(map)

    • 数字数学(math)

    • 网络(net)

    • 对象池(pool)

    • 反射(reflect)

    • 正则(regex)

    • 服务提供(spi)

    • 聚合操作(stream)

    • 字符串文本(text)

    • 并发和线程(thread)

    • 树结构(tree)

    • 工具集合(util)

    • XML操作(xml)

  • 定时任务(hutool-cron)

  • 加密(hutool-crypto)

  • 数据库(hutool-db)

  • 扩展(hutool-extra)

  • HTTP(hutool-http)

  • 日志(hutool-log)

  • 配置文件(hutool-setting)

  • JSON(hutool-json)

  • Office办公(hutool-poi)

  • 套接字(hutool-socket)

  • GUI(hutool-swing)

  • 指南
  • 核心(hutool-core)
  • 注解(annotation)
Hutool
2026-01-03
目录

简介

# 📚简介

Java 注解(Annotation)又称 Java 标注,是 JDK5.0 引入的一种注释机制(JDK1.5新特性)。

一个注解就是一个类。

注解可以加在包、类、字段、方法,方法参数以及局部变量上。可以同时存在多个注解。

# 注解定义

定义注解需要的基础注解信息如下所示:

@SuppressWarnings("deprecation")               //编译器警告过时(source阶段)
@Deprecated                                    //过时(Runtime阶段)
@Override                                      //重写(source阶段)
@Retention(RetentionPolicy.RUNTIME)            //保留注解到程序运行时。(Runtime阶段)
@Target({ElementType.METHOD,ElementType.TYPE}) //标记既能定义在方法上,又能定义在类、接口、枚举上等。
public @interface MyAnnotation1 {

}
  1. @interface表示这就是一个注解,必须
  2. @Documented表示这个注解会被javadoc工具记录
  3. @Target(ElementType.TYPE)表示这个注解可以加在类、接口或者枚举上
  4. @Retention(RetentionPolicy.RUNTIME)表示这个注解在.class 文件中保留

# 注解作用

  1. 编译检查 例如,@SuppressWarnings, @Deprecated 和 @Override 都具有编译检查作用,也可以编译时动态处理,如动态生成代码。
  2. 反射调用 通过反射获取类、字段、方法上面的注解,可以解析并使用对应注解。

# 注解保留阶段(@Retention)

注解分为三个阶段,由@Retention定义,一个注解只能保留在一个阶段:

  1. RetentionPolicy.SOURCE 只存在java源文件,编译后消失
  2. RetentionPolicy.CLASS 只存在class文件,默认
  3. RetentionPolicy.RUNTIME 编译器将Annotation存储于class文件中,并且可由JVM读入

# 注解作用域(@Target)

注解作用域,由@Target定义,一个注解可以定义多个作用域:

  1. ElementType.TYPE 类、接口、枚举
  2. ElementType.METHOD 方法
  3. ElementType.FIELD 属性
  4. ElementType.PARAMETER 参数
  5. ElementType.CONSTRUCTOR 构造方法
  6. ElementType.LOCAL_VARIABLE 局部变量
  7. ElementType.ANNOTATION_TYPE 注解
  8. ElementType.PACKAGE 包
  9. ElementType.TYPE_USE 可以在任意类型使用,但是不能方法方法上
  10. ElementType.MODULE 模块( Java 9+)
  11. ElementType.RECORD_COMPONENT Record 类的组件(Java 16+)

# 注解的继承(@Inherited)

@Inherited标记表示注解可以继承,继承规则为:

  1. 只对类的继承有效,对接口、注解、枚举无效
  2. 子类会继承父类上标记的带有 @Inherited 的注解
  3. 如果子类重写了父类的注解,则使用子类的注解
  4. 方法和字段注解不自动继承:即使类继承了注解,方法和字段上的注解也不会自动继承
  5. 多重继承场景:如果父类和祖父类都有相同注解,遵循就近原则

AnnotatedElement接口表示一个可以被添加注解的元素,如类、字段、方法、参数等,这个接口中提供了:

  1. getAnnotations方法,可以获取父类继承的注解,遵循以上5条原则。
  2. getDeclaredAnnotations方法,可以获取当前元素定义的注解,不包含继承的注解。

# Hutool的封装

Hutool提供了AnnotationUtil和AnnotatedElementUtil工具类,用于获取注解对象、注解值等,同时对于注解继承、复合注解的处理也做了封装。

Openai服务-OpenaiService
注解工具-AnnotationUtil

← Openai服务-OpenaiService 注解工具-AnnotationUtil→

Theme by Vdoing | Copyright © 2025-2026 Hutool | Apache-2.0
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式