注解的原理

注解本质是一种特殊接口,继承自java.lang.annotation.Annotation 。编译时,注解被编译成实现该接口的特殊类,由 JDK 动态代理生成具体实现类。通过反射获取注解时,得到的是运行时生成的动态代理对象。调用注解方法时,实际是调用AnnotationInvocationHandler的invoke方法,从memberValues(来源是 Java 常量池 )中获取对应值。
元注解
用于修饰注解,规定注解行为:
@Retention:指定保留策略。SOURCE 仅存于源码,编译丢弃;CLASS 存于字节码,类加载时丢弃;RUNTIME 运行时保留,可通过反射获取,自定义注解常用此策略。
@Target:限定作用目标,如TYPE(类、接口等 )、METHOD(方法 )、FIELD(字段 )等。
@Documented:使注解能被 Javadoc 工具提取,包含在生成的文档中。
@Inherited:标记注解可被子类继承,类被此注解修饰,其子类自动拥有该注解。

posted @ 2025-03-30 21:02  蒟蒻00  阅读(52)  评论(0)    收藏  举报