不会Java 注解?阿里架构师7分钟带你学会Java 注解基本原理

Qwen3-Coder:企业级AI编程协作者的架构本质与落地实践 AI编程模型正从‘代码生成器’演进为‘开发流程协作者’,其核心在于对软件工程全链路上下文的理解与缝合能力。基于稀疏专家混合(MoE)架构的大模型,通过动态激活领域专属知识单元,在接口迁移、CI/CD诊断、安全修复等高复杂度任务中展现出远超通用大模型的语义精准性与企业规范兼容性。尤其在中文技术生态、内部文档关联、多模态开发上下文(如Git diff+UML+日志)建模方面具备显著优势。Qwen3-Coder-480B-A35B-Instruct正是这一范式的典型代表,它不追求单点编码炫技,而聚焦于压缩需求交付 阅读详情

本文转载自:不会Java 注解?阿里架构师7分钟带你学会Java 注解基本原理


一. 注解的本质

「java.lang.annotation.Annotation」接口中有这么一句话,用来描述『注解』。

The common interface extended by all annotation types
所有的注解类型都继承自这个普通的接口(Annotation)

这句话有点抽象,但却说出了注解的本质。我们看一个 JDK 内置注解的定义:

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.SOURCE)
public @interface Override {
}

这是注解 @Override 的定义,其实它本质上就是:

public interface Override extends Annotation{
}

没错,注解的本质就是一个继承了 Annotation 接口的接口。有关这一点,你可以去反编译任意一个注解类,你会得到结果的。

一个注解准确意义上来说,只不过是一种特殊的注释而已,如果没有解析它的代码,它可能连注释都不如。

解析一个类或者方法的注解往往有两种形式,一种是编译期直接的扫描,一种是运行期反射。

二. 元注解

『元注解』是用于修饰注解的注解,通常用在注解的定义上。

JAVA 中有以下几个『元注解』:

  • @Target:注解的作用目标
  • @Retention:注解的生命周期
  • @Documented:注解是否应当被包含在 JavaDoc 文档中
  • @Inherited:是否允许子类继承该注解

1. @Target

@Target 注解指明该注解可以作用哪些对象上。

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.ANNOTATION_TYPE)
public @interface Target {
    /**
        * Returns an array of the kinds of elements an annotation type
        * can be applied to.
        * @return an array of the kinds of elements an annotation type
        * can be applied to
        */
    ElementType[] value();
}

注解接收一个ElementType数组,ElementType是一个枚举,成员如下:

  • ElementType.TYPE:允许被修饰的注解作用在类、接口和枚举上
  • ElementType.FIELD:允许作用在属性字段上
  • ElementType.METHOD:允许作用在方法上
  • ElementType.PARAMETER:允许作用在方法参数上
  • ElementType.CONSTRUCTOR:允许作用在构造器上
  • ElementType.LOCAL_VARIABLE:允许作用在本地局部变量上
  • ElementType.ANNOTATION_TYPE:允许作用在注解上
  • ElementType.PACKAGE:允许作用在包上
  • ElementType.TYPE_PARAMETER:允许作用在类型参数上
  • ElementType.TYPE_USE:允许作用在类型上

2. @Retention

@Retention 用于指明当前注解的生命周期

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.ANNOTATION_TYPE)
public @interface Retention {
    /**
        * Returns the retention policy.
        * @return the retention policy
        */
    RetentionPolicy value();
}

注解接收一个RetentionPolicy数据,RetentionPolicy是个枚举,成员如下:

  • RetentionPolicy.SOURCE:当前注解编译期可见,不会写入 class 文件
  • RetentionPolicy.CLASS:类加载阶段丢弃,会写入 class 文件
  • RetentionPolicy.RUNTIME:永久保存,可以反射获取

三. JAVA 的内置三大注解

  • @Override
  • @Deprecated 标识类或方法不再推荐使用
  • @SuppressWarnings 主要用来压制 java 的警告

四. 实现一个自己的注解

定义一个注解:

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface HelloAnnotation {
    String value() default "Hello annotation!";
}

使用这个注解:

public class UseAnnotation {

    @HelloAnnotation
    public void hello() {
        System.out.println("hello");
    }

    @HelloAnnotation("Hello world!")
    public void helloWorld() {
        System.out.println("Hello world!");
    }
}

注解最重要的部分在于对注解的处理。注解处理器就是通过反射机制获取被检查方法上的注解信息,然后根据注解元素的值进行特定的处理。如果没有注解处理器,注解就是个注释,或者连注释都不如。

处理这个注解:

public class Test {

    public static void main(String[] args) {
        testAnnotation(UseAnnotation.class);
    }

    private static void testAnnotation(Class<?> cl) {
        for (Method m : cl.getDeclaredMethods()) {
            HelloAnnotation ha = m.getAnnotation(HelloAnnotation.class);
            if (ha != null) {
                System.out.println("Found My Annotation: " + ha.value());
            }
        }
    }
}

输出结果:

Found My Annotation: Hello annotation!
Found My Annotation: Hello world!

本文转载自:不会Java 注解?阿里架构师7分钟带你学会Java 注解基本原理

Java注解的Retention和RetentionPolicy实例分析 主要介绍了Java注解的Retention和RetentionPolicy,结合实例形式分析了Java注解Retention和RetentionPolicy的基本功能及使用方法,需要的朋友可以参考下 立即下载

相关推荐

Zephyr RTOS 嵌入式 C 编程 (使用嵌入式 RTOS POSIX API)8. Zephyr RTOS 与以太网、Wi-Fi 及 TCP/IP

支持的 BSD 函数包括:socket()、close()、recv()、recvfrom()、send()、sendto()、connect()、bind()、listen()、accept()、fcntl()(用于设置非阻塞模式)、getsockopt()、setsockopt()、poll()、select()、getaddrinfo()和 getnameinfo()。向开发板烧录代码也可能存在问题。可以通过调用 net_if_up() 开启网络接口 ,调用 net_if_down() 关闭接口。

1342

JDK1.5的@Retention注解的使用和分析

注解@Retention可以用来修饰注解,是注解的注解,称为元注解。Retention注解是RetentionPolicy类型的,是一个标准的枚举类型.这个枚举决定了Retention注解应该如何去保持,也可理解为Rentention 搭配 RententionPolicy使用。RetentionPolicy有3个值:CLASS RUNTIME SOURCE。按生命周期来划分可分为3类: 1...

gelong_bokewang的博客 698

实战指南:基于Windows Server构建企业级AAA认证体系

本文详细介绍了如何在Windows Server环境下构建企业级AAA认证体系,涵盖AD域服务部署、NPS服务器配置及华为设备对接实战。通过整合Radius协议与AD域账号管理,实现网络设备的统一认证与权限控制,提升企业IT安全管理效率。特别适用于需要零成本实现AAA认证的中大型企业。

weixin_28304023的博客 421

@Retention注解详解

一、介绍: @Retention是用来修饰注解的,注解的注解,也称为元注解 二、作用: @Retention修饰注解,用来表示注解的生命周期,生命周期的长短取决于@Retention的属性RetentionPolicy指定的值,例如@Retention(RetentionPolicy.RUNTIME) 取值 描述 作用范围 使用场景 RetentionPolicy.SOURCE 表示注解只保留在源文件,当java文件编译成class文件,就会消失 源文件 只是做一些检查性的操作,,比如 @

weixin_42403127的博客 2万+

11n、11ac、11ax和11be MCS表(全网最全)

1、无线协商速率介绍及计算 2、附11n、11ac、11ax 完整MCS速率表

weixin_41500064的博客 2万+

麒麟v10(ky10.x86_64)升级——openssl-3.2.2、openssh-9.8p1

执行命令: make -j 4 && make install 这里要等待一段时间,等待编译完成。执行命令: ./configure --prefix=/usr/local/src/zlilb。执行命令: ./config --prefix=/usr/local/src/openssl。执行命令: make -j 4 && make test && make install。执行命令: make -j 4 && make install。执行命令: /etc/init.d/sshd restart。

X_yufei的博客 7428

@Retention注解作用

@Retention作用是定义被它所注解的注解保留多久,一共有三种策略,定义在RetentionPolicy枚举中.从注释上看:source:注解只保留在源文件,当Java文件编译成class文件的时候,注解被遗弃;被编译器忽略class:注解被保留到class文件,但jvm加载class文件时候被遗弃,这是默认的生命周期runtime:注解不仅被保存到class文件中,jvm加载class文件之...

m0_37840000的博客 6万+

YOLOv12环境配置,手把手教你使用YOLOv12训练自己的数据集和推理(附YOLOv12网络结构图),全文最详细教程

YOLO 系统尊嘟太卷了吧,YOLOv11 还没完明白,YOLOv12 就重磅来袭,YOLOv12 是由纽约州立大学联合中科院在 2025年2月19 日发布,从 YOLOv12 论文题目我们大概就知道做了那些更新 ,下图是YOLOv12 在 COCO 数据集上的性能表现引入区域注意力机制(area-attention):通过引入十字形窗口自我注意机制,沿水平和垂直条纹计算注意力机制,纵横交错的注意机制。如下图所示,区域注意力采用最多简单的等分方法,将特征地图垂直或水平划分为 L 个区域。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 6万+

@Retention注解有什么用?

在Java中,@Retention 注解是一个元注解(meta-annotation),它用来指定其他自定义注解的生命周期。通过使用 @Retention,你可以控制一个注解被保留的时间段,这样你就可以确定这个注解是在编译时、类加载时还是运行时可用。@Retention 的主要作用是帮助你管理注解的可见性,确保它们在正确的时间点对相应的工具或代码起作用。例如,如果你创建了一个用于记录日志的注解,并希望在运行时动态地改变程序的日志行为,那么你需要将该注解标记为 RUNTIME 保留策略。

weixin_44512485的博客 1054

dex2oat编译优化调试

dex2oat编译调试的一些技巧和方法

jidapenglin28的专栏 5045

CMake入门教程【基础篇】在Windows、Linux上安装CMake

CMake如何下载与安装

小鱼酱的博客 2727

@Retention注解的作用

Java中java/lang/annotation/Retention.java源代码: @Documented @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.ANNOTATION_TYPE) public @interface Retention { RetentionPolicy value(); } Retention的中文意思是:保留,记忆力。 更具体的分析见:@Retention注解作用 ...

知道这个有什么用? 1104

科研项目数据抓取:Python爬虫实现与分析

本文详细介绍了如何使用Python爬虫抓取科研项目的数据,涵盖了从目标数据源选择到数据存储与分析的整个过程。通过使用。

2201_76125261的博客 1710

java 注解_不会Java 注解?阿里架构师7分钟带你学会Java 注解基本原理

欢迎关注专栏《Java架构筑基》——专注于Java技术的研究与分享!Java架构筑基Java架构筑基——专注于Java技术的研究与分享!后续文章将首发此专栏!欢迎各位Java工程师朋友投稿和关注一. 注解的本质「java.lang.annotation.Annotation」接口中有这么一句话,用来描述『注解』。The common interface extended by all annota...

weixin_39840616的博客 78

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

@retention注解作用_不会Java 注解?阿里架构师7分钟带你学会Java 注解基本原理

一. 注解的本质「java.lang.annotation.Annotation」接口中有这么一句话,用来描述『注解』。The common interface extended by all annotation types所有的注解类型都继承自这个普通的接口(Annotation)这句话有点抽象,但却说出了注解的本质。我们看一个 JDK 内置注解的定义:@Target(ElementType....

weixin_39834488的博客 79

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

java参数注解pam_不会Java 注解?阿里架构师7分钟带你学会Java 注解基本原理

欢迎关注专栏《Java架构筑基》——专注于Java技术的研究与分享!Java架构筑基Java架构筑基——专注于Java技术的研究与分享!后续文章将首发此专栏!欢迎各位Java工程师朋友投稿和关注一. 注解的本质「java.lang.annotation.Annotation」接口中有这么一句话,用来描述『注解』。The common interface extended by all annota...

weixin_36294922的博客 87

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

【Java进阶营】Java开发者:想去BATJ大厂?那得先学会系统学习提升自己

不知不觉自己已经做了几年开发了,由记得刚出来工作的时候感觉自己能牛逼,现在回想起来感觉好无知。懂的越多的时候你才会发现懂的越少。 如果你的知识是一个圆,当你的圆越大时,圆外面的世界也就越大。 最近看到很多Java新手问Java学习路线,学习方法啊,如何入门啊,所以我从网上找了一些资料,然后以我的工作经验给大家总结一下,让你们少走弯路,提取一些工作中经常用到的技术。 那么拿到BATJ大厂的offer究竟有多难? 从我身边听说的情况来看,只要技术扎实,很多人都能通过一、二面,却很容易死在三四面,原因就在于.

m0_60721514的博客 619

复盘,2021年,帮助了很多伙伴晋级阿里、字节等一线大厂

大家好,我是Tom哥~校招进阿里,P7技术专家。工作年限不长不短,变现过阿里的期权(美股和港股),有点资产,数额保密, ????????????  哈哈。虽说还没实现财务自由????????????,但绝对是“工作自由”。(文末送现金红包~)2021年,烦透按部就班的生活,想培养个新兴趣爱好,思来想去决定写技术文章。既可以梳理知识体系,也可以帮到很多有潜力的同学晋级头条、阿里等一线大厂!!!于是重拾微信公众号,挑灯夜战,爆肝输出几十篇原创技术文章,深受读者好评,被很多大V号、技

公众号:微观技术 1718

Java开发者:想去BATJ大厂?那得先学会系统学习提升自己!

本文转载自:Java开发者:想去BATJ大厂?那得先学会系统学习提升自己! 不知不觉自己已经做了几年开发了,由记得刚出来工作的时候感觉自己能牛逼,现在回想起来感觉好无知。懂的越多的时候你才会发现懂的越少。 如果你的知识是一个圆,当你的圆越大时,圆外面的世界也就越大。 最近看到很多Java新手问Java学习路线,学习方法啊,如何入门啊,所以我从网上找了一些资料,然后以我的工作经验给大家总结一下,让...

Java_supermanNO1的博客 680

献上我的膝盖!阿里高工亲码Java技术成长笔记太香了!基础框架+性能优化+分布式架构+面试齐飞

*1.Redis:**5分钟搞定Linux下Redis安装+String、List、Hash、Set、Zset类型使用场景+时间轴、队列应用场景设计实战+购物车开发与设计实战+Redis与Lua模拟抢红包实战+网站投票设计与开发实战+Lua+Redis联合开发指南+Redis慢操作优化+Redis哨兵机制及底层机制分析+10分钟搭建Redis高可用集群实战+动态扩容、缩减集群节点实战+Redis常见面试题汇总。

2401_89308178的博客 814

2024年太牛了!阿里内部曝出——Java技术成长笔记,业内又一里程碑,java面试没有项目经验

*1.Redis:**5分钟搞定Linux下Redis安装+String、List、Hash、Set、Zset类型使用场景+时间轴、队列应用场景设计实战+购物车开发与设计实战+Redis与Lua模拟抢红包实战+网站投票设计与开发实战+Lua+Redis联合开发指南+Redis慢操作优化+Redis哨兵机制及底层机制分析+10分钟搭建Redis高可用集群实战+动态扩容、缩减集群节点实战+Redis常见面试题汇总。

2401_84584796的博客 1033

非官方不权威Java面试宝典

前言 这段时间也写了一些东西了,所以今天寻思着把博客系统整理一下,大致方向是为面试服务的,包括知识梳理、练手项目推荐和面试经验等,当然也有纯技术文,但即使这些技术文也是面试高频问题分析,所以我觉得我这篇文章叫面试宝典应该不过分吧。(手动滑稽????) 面试经验 既然是面试宝典,那面试经验分享肯定得有噻,面试经验少的可以看看,当然仅仅是参考,被面试官赶出来了我可不负责。???? 字节跳动Java岗一二三面全经过分享 Java岗高频面试题系统盘点 面试37个Java岗位,16个offer上岸 166位Java

linuxguitu的博客 223

2021金三银四春招来袭,掌握这份成长宝典,offer岂不是随便拿?

阿里使用的技术一直都走在前沿,程序员所学和所掌握的也一直以阿里等一线互联网企业的要求为标准,所以阿里需要什么样的人才,成为了很多程序员的发展目标和学习方向。 实际上,阿里巴巴发展也离不开公司里的每一个付出的员工们,更值得一提的是阿里的程序员们除了完成自己的本分工作以外,还会抽出时间去提升自己的技术。近日,阿里又迎来一里程碑,首推Java架构技术成长笔记,理论与实战兼备,被业内评级“钻石级”,可以说是程序员必备! 下文内容主要是写这份《Java技术成长笔记》的主要提纲内容,提纲内容包括Xmind思维图+实战

一入Java深似海 263

Java大厂面试官灵魂拷问:从Spring Boot到AI智能代理,战五渣如何应对?

大厂面试不仅考察广度,更注重深度和实际场景的结合。从传统Java EE到云原生微服务,再到如今的AI工程化,全栈能力愈发重要。建议开发者不仅要会用框架,更要理解其背后的设计思想与落地挑战。

chenmingxing11的博客 333

linux查询mysql版本命令

前言 Spring无论在Java生态系统,还是在就业市场,是绝对的王者。大厂面试出镜率之高,投产规模之广,无出其右。随着技术的发展,Spring 从往日的 IoC 框架,已发展成 Cloud Native 基础设施,衍生出大量 Spring 技术栈,如大家熟知的 Spring Boot、Spring Cloud 和 Spring Security 等。 我相信很多程序员不管是在面试中,还是在日常开发中,总会面临各种挑战和考验,唯有系统性地掌握 Spring编程思想、设计理念,以及具体的实现方式,方可游刃有余

m0_56824583的博客 298
上一篇: Kafka 的这些原理你知道吗
下一篇: 不想进BAT的Java程序员不是好程序员,BAT后端Java岗面试真题分享
Java_supermanNO1
博客等级 码龄7年 1170粉丝 329原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值