使用自定义注解处理器,自动收集类信息

背景

在开发过程有些时候我们会需要收集一些类信息。比如要知道某个子类下的所有实现类。可以通过反射的方式实现。但是这种方法有性能问题,因为在运行时,所有类都会包含在dex文件中。这个文件中的类可能有几十万个。而且在实际开发中会发现,新写出来的类,可能没有打包进apk,通过反射无法及时的发现。于是想通过自定义注解处理器来实现。

实现

只要在需要收集的类上面配置 @AutoRegister() 注解,在注解中写上你要把这个类的类名,生成到那个类的全类名。就可以实现自动收集。

在这里插入图片描述

例如:

我在A,B,C,D 四个类中都配置了这个注解
在这里插入图片描述
最后会生成注解中配置的类,把类名保存到CLASSES字段中,后面业务中就可以通过反射来实现相应的业务。将注册这个功能,做到对修改关闭,对拖着开发。
在这里插入图片描述

支持多个配置

比如下面 RouteA,RouteB,RouteC 都配置了 AutoRegister 注解

在这里插入图片描述
注解中配置的事其他目标类,就会自动生成

在这里插入图片描述

依赖引入

    //以下依赖用于自动注册--start
    annotationProcessor 'com.github.zhuguohui.AutoRegister:auto_register_annotation_processer:1.0.0'
    implementation 'com.github.zhuguohui.AutoRegister:auto_register_annotation:1.0.0'
    //以下依赖用于自动注册--end

源码

github.com/zhuguohui/AutoRegister

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值