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

深入理解Java注解(从零开始手把手教你自定义与使用Java注解)

在Java开发中,Java注解(Annotation)是一种强大的元数据工具,它允许开发者在代码中添加额外的信息,而不会直接影响程序逻辑。无论是Spring框架中的@Autowired,还是JPA中的@Entity,都离不开注解的支持。本教程将带你从零开始,深入浅出地掌握自定义注解的创建、使用和处理。

什么是Java注解?

Java注解是从JDK 5开始引入的一种语法特性,用于为代码提供元数据(metadata)。这些元数据可以被编译器、开发工具或运行时环境读取并处理。

内置注解 vs 自定义注解

Java提供了一些内置注解,如:

  • @Override:表示方法重写了父类方法
  • @Deprecated:标记过时的代码
  • @SuppressWarnings:抑制编译器警告

但很多时候我们需要自己的业务逻辑注解,这就需要使用自定义注解

第一步:定义一个自定义注解

要创建自定义注解,我们使用@interface关键字。下面是一个简单的权限控制注解示例:

public @interface RequirePermission { String value() default "user"; boolean required() default true;}

这个注解包含两个元素:valuerequired,都有默认值,使用时可省略。

第二步:理解Java元注解

为了让自定义注解具备特定行为,我们需要用到Java元注解(Meta-Annotations),即“注解的注解”。常用的元注解有:

  • @Target:指定注解可以用在哪些程序元素上(如方法、类、字段等)
  • @Retention:指定注解的生命周期(SOURCE / CLASS / RUNTIME)
  • @Documented:是否包含在JavaDoc中
  • @Inherited:是否可被子类继承

完善我们的注解:

import java.lang.annotation.*;@Target(ElementType.METHOD) // 只能用于方法@Retention(RetentionPolicy.RUNTIME) // 运行时保留,可通过反射读取@Documentedpublic @interface RequirePermission { String value() default "user"; boolean required() default true;}

第三步:使用自定义注解

现在可以在方法上使用这个注解了:

public class UserService { @RequirePermission(value = "admin", required = true) public void deleteUser(Long userId) { System.out.println("删除用户: " + userId); } @RequirePermission public void viewProfile() { System.out.println("查看个人资料"); }}

第四步:通过反射读取注解(注解处理器)

要让注解真正“生效”,我们需要编写注解处理器。通常在框架或AOP中实现,这里用简单反射演示:

import java.lang.reflect.Method;public class AnnotationProcessor { public static void main(String[] args) throws Exception { Class<UserService> clazz = UserService.class; Method[] methods = clazz.getDeclaredMethods(); for (Method method : methods) { if (method.isAnnotationPresent(RequirePermission.class)) { RequirePermission anno = method.getAnnotation(RequirePermission.class); System.out.println("方法 " + method.getName() + " 需要权限: " + anno.value() + ", 是否必需: " + anno.required()); } } }}

运行结果:

方法 deleteUser 需要权限: admin, 是否必需: true方法 viewProfile 需要权限: user, 是否必需: true

总结

通过本教程,你已经掌握了:

  • 如何定义Java注解
  • 如何使用Java元注解控制注解行为
  • 如何在代码中应用自定义注解
  • 如何通过反射实现简单的注解处理器

注解是现代Java框架(如Spring、Hibernate)的核心机制之一。掌握它,你就离高级Java开发更近了一步!

来源:https://www.vpshk.cn/https://www.vpshk.cn/

http://www.gsyq.cn/news/142253.html

相关文章:

  • KDTree 局部地图在 FAST-LIO 中的作用
  • Open-AutoGLM上手机,只需这4步!开发者必看的轻量化部署秘籍
  • Open-AutoGLM沉思:它如何重构大模型自动化推理的未来?
  • 隔离485+网口双模:16位AD高精度采集,数据传输零干扰
  • KDTree原理介绍
  • 敦化市鼻炎调理哪家好?曹丹诊所为您提供专业中医解决方案 - 品牌日记
  • 探索大数据领域 Eureka 的服务限流机制
  • 2025年比较好的金属反弹骑马抽最新TOP品牌厂家排行 - 品牌宣传支持者
  • 2025年评价好的景区亮化工程/道路景观亮化工程品牌实力榜 - 品牌宣传支持者
  • 88%企业选择长期合作黑蚁文创的6大理由
  • 职业发展规划:基于行业趋势的个性化成长路径建议
  • 【Open-AutoGLM 2.0核心原理揭秘】:深度解析下一代自动化大模型推理引擎
  • 【稀缺资源】Open-AutoGLM内部架构首曝光:掌握AI协同训练核心逻辑
  • 2025初中数学家教五大机构权威评测,目标中考高分的初中数学家教 - 速递信息
  • 如何在macOS上高效运行Open-AutoGLM?资深AI工程师的7条实战建议
  • 孩子王闯关港股:背水一战
  • 2025国内最新补血营养剂品牌TOP5评测!中华老字号与现代科技融合,国内优质厂家权威榜单发布 - 全局中转站
  • 亲测勒索病毒解密数据恢复技术标准
  • 2025年口碑好的景观照明工程工程案例榜单 - 品牌宣传支持者
  • 2025年12月欧洲名义雇主eor人力解决方案,全球灵活用工名义雇主eor方案,名义雇主eor公司推荐:行业测评与选择指南 - 品牌鉴赏师
  • 变压器的智能绕线功能系统
  • 2025年靠谱的缓冲托底轨行业内口碑厂家排行榜 - 品牌宣传支持者
  • 阿里云+智普Open-AutoGLM部署实录(万字长文揭秘企业级AI落地细节)
  • Open-AutoGLM模型服务搭建全记录(从零到生产环境落地)
  • 【企业级AI部署新标准】:为何90%的技术团队都在抢用智谱Open-AutoGLM?
  • 基于单片机的电梯模拟运行系统
  • 别瞎发软文!6大平台避坑攻略,教你精准匹配媒体渠道 - 资讯焦点
  • 2025年12月铝单板品牌推荐及哪里有卖指南:北京氟碳铝单板、北京铝单板、北京铝板、压花铝板、合金铝板、复合铝板、幕墙铝板 - 优质品牌商家
  • 2025年评价高的三段力一字铰链/铝框门一字铰链最新TOP品牌厂家排行 - 品牌宣传支持者
  • 【计算的脉络:从硅片逻辑到高并发抽象】第 7 篇:内存屏障(上):x86 与 ARM 下的屏障语义差异