当前位置: 首页 > news >正文

JAVA核心知识点--元注解详解

608564A16E7D652E882914E830EE4050(1)

📚博客主页:代码探秘者

✨专栏:《JavaSe》 其他更新ing…

❤️感谢大家点赞👍🏻收藏⭐评论✍🏻,您的三连就是我持续更新的动力❤️

🙏作者水平有限,欢迎各位大佬指点,相互学习进步!


img

文章目录

    • 一、@Target:定义注解可应用的位置
      • 常用取值(来自 `java.lang.annotation.ElementType` 枚举):
      • 示例:
    • 二、@Retention:定义注解的生命周期(保留策略)
      • 可选值(来自 `java.lang.annotation.RetentionPolicy` 枚举):
      • 示例:
    • 三、@Documented:是否包含在 Javadoc 中
      • 说明:
      • 示例:
    • 四、@Inherited:注解是否可以被子类继承
      • 说明:
      • 示例:
    • 五、组合使用的例子
    • 小结

元注解(Meta-Annotation)用于定义注解行为,它们本身是注解,用来修饰“注解类”。下面我详细介绍一下常见元注解以及它们可以填写的值(即 参数或枚举类型的取值):


一、@Target:定义注解可应用的位置

常用取值(来自 java.lang.annotation.ElementType 枚举):

含义
TYPE类、接口、枚举、注解类
FIELD字段(成员变量)
METHOD方法
PARAMETER方法参数
CONSTRUCTOR构造方法
LOCAL_VARIABLE局部变量
ANNOTATION_TYPE注解类型(用于元注解)
PACKAGE
TYPE_PARAMETER (Java 8+)类型参数(泛型中的 T、E 等)
TYPE_USE (Java 8+)所有使用类型的地方,如泛型、强转、变量声明等

示例:

@Target({ElementType.METHOD, ElementType.TYPE})
public @interface MyAnnotation {}

二、@Retention:定义注解的生命周期(保留策略)

可选值(来自 java.lang.annotation.RetentionPolicy 枚举):

含义
SOURCE仅在源码中保留,编译后丢弃(如 @Override)
CLASS编译期保留在 class 文件中,运行时不可读取(默认)
RUNTIME运行时可通过反射读取(框架中最常用)

示例:

@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {}

三、@Documented:是否包含在 Javadoc 中

说明:

  • 没有参数。
  • 加上这个注解,表示该注解使用时会被包含在生成的 Javadoc 中。

示例:

@Documented
public @interface MyAnnotation {}

四、@Inherited:注解是否可以被子类继承

说明:

  • 没有参数。
  • 仅适用于类(@Target(ElementType.TYPE));
  • 如果某个类用注解 A 标注了,子类也会“继承”这个注解(通过 getAnnotation() 可获取)。

示例:

@Inherited
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {}

五、组合使用的例子

@Documented
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface MyLog {String value() default "";
}

小结

元注解参数类型或可选值
@TargetElementType 枚举:TYPE, FIELD, METHOD, …
@RetentionRetentionPolicy 枚举:SOURCE, CLASS, RUNTIME
@Documented无参数
@Inherited无参数,仅作用于类注解

http://www.xdnf.cn/news/773047.html

相关文章:

  • pbootcms 搜索自定义字段模糊、精准搜索
  • SolidWorks建模(U盘)- 多实体建模拆图案例
  • 网络攻防技术三:网络脆弱性分析
  • 华为OD机试_2025 B卷_小华地图寻宝(Python,100分)(附详细解题思路)
  • 零基础学习计算机网络编程----socket实现UDP协议
  • 功能结构整理
  • python 如何写4或5的表达式
  • 瑞萨CS+ for CC V8.13.00环境安装教程
  • 网络攻防技术五:网络扫描技术
  • 《操作系统真相还原》——完善内核
  • mysql专题上
  • 中科院报道铁电液晶:从实验室突破到多场景应用展望
  • 快捷键插入函数
  • python爬虫:Ruia的详细使用(一个基于asyncio和aiohttp的异步爬虫框架)
  • DAY 38 超大力王爱学Python
  • SDU棋界精灵——实现硬件程序ESP32的FreeRTOS任务
  • GODOT引擎学习日志
  • 排便不是一件可以随意“延后”的事:长期便秘->直肠敏感性降低->功能性便秘->大便失禁
  • #STM32 HAL库实现的STM32F407时钟配置程序以及和STM32F103配置对比
  • Ubuntu挂起和休眠
  • Java垃圾回收算法及GC触发条件
  • [蓝桥杯]找到给定字符串中的不同字符
  • NodeJS全栈WEB3面试题——P1基础知识:区块链与Web3原理
  • 逆向工程API和无头浏览器的区别
  • 将前后端分离版的前端vue打包成EXE的完整解决方案
  • 电脑的ip地址会自动变怎么办?原因解析和解决方法
  • Missashe考研日记—Day51-Day57
  • 软件开发项目管理工具选型及禅道开源版安装
  • docker可视化工具
  • 英文投资理财源码挖矿源码投资理财系统源码(源码下载)