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

【JAVA】注解基础:元注解与自定义注解(30)

核心知识点详细解释

Java注解的基本概念和使用场景

基本概念

注解(Annotation)是 Java 5 引入的一种元数据机制,它可以为程序元素(类、方法、字段等)添加额外的信息。注解本身不会影响程序的逻辑,但可以在编译、运行时被读取和处理,从而实现一些特定的功能。例如,@Override 注解用于标记一个方法是重写父类的方法,编译器会检查该方法是否真的重写了父类的方法。

使用场景
  • 编译时检查:如 @Override 注解,帮助编译器进行语法检查,确保方法重写的正确性。
  • 代码生成:通过注解可以在编译时生成额外的代码,例如 Lombok 库使用注解来自动生成 getter、setter 等方法。
  • 运行时配置:在运行时读取注解信息,进行配置和处理,例如 Spring 框架使用注解来进行依赖注入和组件扫描。

元注解的定义和作用

元注解是用于注解其他注解的注解,Java 提供了几个内置的元注解,主要包括:

  • @Retention:指定注解的保留策略,即注解在什么阶段可用。它有三个取值:
    • RetentionPolicy.SOURCE:注解只在源码中保留,编译时会被丢弃。
    • RetentionPolicy.CLASS:注解在编译时保留在字节码中,但在运行时不会被加载。
    • RetentionPolicy.RUNTIME:注解在运行时也会被保留,可以通过反射机制读取。
  • @Target:指定注解可以应用的程序元素类型,例如类、方法、字段等。可以使用 ElementType 枚举来指定,如 ElementType.TYPE 表示可以应用于类、接口等,ElementType.METHOD 表示可以应用于方法。
  • @Documented:指定注解是否会被包含在 JavaDoc 文档中。
  • @Inherited:指定注解是否可以被继承。如果一个类使用了带有 @Inherited 注解的注解,那么它的子类也会继承该注解。

如何自定义Java注解

自定义注解需要使用 @interface 关键字,并且可以使用元注解来修饰。以下是一个自定义注解的示例:

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;// 定义注解的保留策略为运行时
@Retention(RetentionPolicy.RUNTIME)
// 定义注解可以应用于类和方法
@Target({ElementType.TYPE, ElementType.METHOD})
public @interface MyAnnotation {// 定义注解的属性,带有默认值String value() default 
http://www.xdnf.cn/news/602587.html

相关文章:

  • 【飞书知识问答】AI赋能企业,开启高效办公新模式
  • Google机器学习实践指南(学习速率篇)
  • (随记)商业落地实施RAG工程的核心步骤
  • 项目管理的流程与核心细节全解析
  • 如何使用 WebStorm 编写第一个 Node.js 项目
  • 《P3375 【模板】KMP》
  • 9大开源AI智能体概况
  • Python爬虫(34)Python爬虫高阶:动态页面处理与Playwright增强控制深度解析
  • c语言文件操作详解
  • 实验-设计一个应用系统(计算机组成原理)
  • Web攻防-SQL注入数据库类型用户权限架构分层符号干扰利用过程发现思路
  • Docker 与 Kubernetes 部署 RabbitMQ 集群(一)
  • 数据共享中的库表交换怎么做?
  • 【生成模型】【基础知识】CFG与CFG蒸馏
  • 深度解析:SQLynx 如何筑牢数据库安全防线​
  • 邻近标记技术(PL)在癌症研究中的应用
  • 动态规划中的 求“最长”、“最大收益”、“最多区间”、“最优策略” 双重 for + 状态转移
  • 视觉语言模型(Vision-Language Model, VLM)的简单介绍
  • 文章记单词 | 第105篇(六级)
  • Python、PyTorch、TensorFlow和飞桨(PaddlePaddle)的核心介绍及对比
  • Flutter遇到的问题
  • 安装 tensorflow-2.10.0 支持 gpu
  • 【Go-4】函数
  • Android Studio 开发环境兼容性检索(AGP / Gradle / Kotlin / JDK)
  • 音频AAC编码与RV1126的AENC模块的讲解
  • 什么是VR场景?VR与3D漫游到底有什么区别
  • [Windows] 格式工厂 FormatFactory v5.20.便携版 ——多功能媒体文件转换工具
  • Ansible快速入门指南
  • A服务器备份rabbitmq持久化目录到B服务器,不显示mq队列消息
  • 智警杯备赛--数据应用技术1