Java语言的高级特性-注解与反射


title: JAVA基础|Java语言的高级特性-注解与反射
date: 2024-03-07 13:48:21
categories:
- Android开发
- Java知道
tags:
- Android
- 注解与反射
- Retrofit
- JAVA

Retrofit中的注解反射与动态代理

注解 (标注)

  • Java注解,又称为Java标注,JDK5.0引入的一种注释机制。
  • 注解是元数据的一种形式,提供有关于程序不属于程序本身的数据。

注解声明

声明一个注解类型

Java中所有的注解,默认实现Annotation接口

接口

//Java语言中Annotation的定义

package java.lang.annotation;

public interface Annotation {

   boolean equals(Object obj);

   int hashCode();

   String toString();

   Class<? extends Annotation> annotationType();
}

与声明一个"Class"不同的是,注解的声明使用 @interface关键字

public @interface Lance{

}

元注解

在定义注解时,注解类也能够使用其他注解声明

定义

元注解(meta-annotation),对注解类型进行注解的注解类

另外还有@Documentened 与 @Inherited 元注解,前者用于被javadoc工具提取成文档,后者表示子类继承父类中定义的注解

@Target

注解标记另一个注解,以限制可以应用注解的Java元素类型。

@Retention

注解制定标记注解的存储方式

注解类型元素

  • 在上文元注解中,允许使用注解时传递参数。
  • 我们也能让自定义注解的主体包含annotation type element(注解类型元素)声明。
    • 使用类似方法,可以定义可选的默认值

注解的应用场景

根据注解的保留级别不同,注解的应用存在不同场景

级别典型技术说明
源码APT在编译期能够获取注解与注解声明中的类(包括类中所有的成员信息),一般用于生成额外的辅助类
字节码字节码增强在编译出Class后,通过修改Class数据以实现代码逻辑目的。对于是否需要修改的区分或者修改为不同逻辑的判断可以使用注解。
运行时反射在程序运行期间,通过反射技术动态获取注解与其元素,从而完成不同的逻辑判定。

APT注解处理器

  • Process过程会执行0`无数次(不一定),每一次都叫做一次round
  • 至于执行几次的规律(还未学习)
//判断结束
roundEnvironment.processingOver();

//或者判断集合为空
set.isEmpty();

字节码增强

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值