news 2026/4/17 21:35:53

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
深入理解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/

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 7:44:07

RAG入门指南:解决大模型知识更新滞后与幻觉现象的终极方案

RAG&#xff08;检索增强生成&#xff09;是一种结合信息检索和文本生成的技术&#xff0c;通过"先检索后回答"机制解决大模型知识更新滞后和幻觉问题。核心流程包括&#xff1a;从外部知识库检索相关文本片段&#xff0c;将检索内容与用户查询一起输入LLM生成最终答…

作者头像 李华
网站建设 2026/4/18 6:25:30

Open-AutoGLM部署全流程揭秘(小白也能搞定的本地AI配置)

第一章&#xff1a;Open-AutoGLM本地部署概述Open-AutoGLM 是一个开源的自动化代码生成语言模型框架&#xff0c;支持在本地环境中进行私有化部署&#xff0c;适用于企业级开发辅助、代码补全和智能文档生成等场景。其核心优势在于可离线运行、数据隐私保护强&#xff0c;并兼容…

作者头像 李华
网站建设 2026/3/25 12:02:06

【AutoGLM实战指南】:从零部署GitHub开源项目并实现智能代码补全

第一章&#xff1a;AutoGLM项目概述AutoGLM 是一个面向通用语言模型自动化调优与部署的开源框架&#xff0c;旨在降低大模型在垂直领域应用中的技术门槛。该项目融合了自动化机器学习&#xff08;AutoML&#xff09;理念与自然语言处理&#xff08;NLP&#xff09;最佳实践&…

作者头像 李华
网站建设 2026/4/15 20:20:09

从DeepSeek看AI产业跃迁:大模型时代的技术变革与实战应用

文章指出AI产业正从粗放式竞赛转向价值深耕阶段&#xff0c;大模型应用爆发促使产业转向精细化运营。算力方面从重训练转向训推均衡&#xff0c;异构智算平台成为关键解决方案。联想推出万全异构智算平台&#xff0c;整合异构算力资源&#xff0c;实现统一管理与智能调度&#…

作者头像 李华
网站建设 2026/4/18 7:58:02

【Open-AutoGLM本地部署终极指南】:手把手教你从零搭建AI推理环境

第一章&#xff1a;Open-AutoGLM本地部署概述 Open-AutoGLM 是一个基于 GLM 架构的开源自动化语言模型工具&#xff0c;支持本地化部署与定制化推理任务。通过在本地环境中运行该模型&#xff0c;用户可实现数据隐私保护、低延迟响应以及对硬件资源的精细控制。 部署环境准备 …

作者头像 李华
网站建设 2026/4/18 3:34:58

Open-AutoGLM评分全网最高(三大核心指标领先第二名30%)

第一章&#xff1a;Open-AutoGLM 评测得分概览 Open-AutoGLM 作为新一代开源自动推理语言模型&#xff0c;在多项权威基准测试中展现出卓越性能。其核心优势体现在逻辑推理、多步任务分解以及自然语言理解能力上&#xff0c;尤其在复杂指令遵循场景中表现突出。 核心评测维度与…

作者头像 李华