Java注解是如何工作的

本文探讨了Java注解的功能及工作原理,特别是在运行时通过反射解析注解的过程。介绍了注解如何作用于类、方法等,并通过Spring框架中@Autowired注解的实例,展示了反射机制在实例域赋值中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java的注解功能能够为我们节省很多源代码,其实就是用机器来批量处理事情了,那注解的工作原理是什么样的呢?其实使用了注解,肯定要有解析注解的代码,解析注解又可以分为两种,一种是运行时通过反射解析处理,一种是通过定义注解处理器编译生成新的文件,区别就是前者运行效率较后者差,前者使用较后者方便,所以不同技术手段往往具有相反的特性,可以满足不同环境下的需求。

这里我们讨论下运行时注解的情况,我们知道注解可以作用于类、方法、域、方法参数等,运行时,会有程序去扫描这些注解,当然扫描的技术手段就是反射机制。大致看来好像很好理解,有些细节需要我们深究,这里以Spring为例,当我们使用@Autowired注解时,没有给数据成员赋值,那运行时是如何处理的呢?其实就是反射,因为反射不仅可以拿到类型的元信息,还可以通过这些元信息对实例进行操作,下面的例子看了就明白了,下面的例子中,我们通过反射对实例进行了域的赋值:

public class AutowiredT {
    public static void main(String[] args) throws Exception {
        TT o = new TT();
        Class c = o.getClass();
        Field f = c.getDeclaredField("a");
        f.setAccessible(true);
        f.set(o, 4);
        System.out.println(o.a);
    }
}

class TT {
    public int a;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值