- 根据传入的host寻找我们生成的代劳类:例如MainActivity->MainActity$$ViewInjector。
- 强转为同一的接口,调用接口供给的办法。
这两件事应当不复杂,第一件事是拼接代劳类名,然后反射生查对象,第二件事强转调用。
- public class Ioc{
- public static void inject(Activity activity){
- inject(activity , activity);
- }
- public static void inject(Object host , Object root){
- Class<?> clazz = host.getClass();
- String proxyClassFullName = clazz.getName()+"$$ViewInjector";
- //省略try,catch相干代码
- Class<?> proxyClazz = Class.forName(proxyClassFullName);
- ViewInjector viewInjector = (com.zhy.ioc.ViewInjector) proxyClazz.newInstance();
- viewInjector.inject(host,root);
- }
- }
- public interface ViewInjector<T>{
- void inject(T t , Object object);
- }
代码很简单,拼接代劳类的全路径,然后经由过程newInstance生成实例,然后强转,调用代劳类的inject办法。
如许我们就完成了一个编译时注解框架的编写。
六、总结
- Element
- - VariableElement //一般代表成员变量
- - ExecutableElement //一般代表类中的办法
- - TypeElement //一般代表代表类
- - PackageElement //一般代表Package
本文经由过程具体的实例来描述了若何编写一个基于编译时注解的项目,重要步调为:项目构造的划分、注解模块的实现、注解处理器的编写以及对外颁布的API模块的编写。经由过程文本的进修应当可以或许懂得基于编译时注解这类框架运行的道理,以及本身若何去编写如许一类框架。
【编辑推荐】
- 关于Android模块化我有一些话不知当讲欠妥讲
- Android开辟者自述:为什愦我要改用Kotlin?
- 用Kotlin优雅地开辟Android应用
- HTTPS 道理浅析及其在 Android 中的应用
- 【拭魅战】Android Data Binding大年夜抵触到爱不释手
推荐阅读
栈(stack)又称之为客栈是一个特别的有序表,其插入和删除操作都在栈顶进行操作,并且按照先辈后出,落后先出的规矩进交运作。如下图所示例如枪的弹匣,第一颗放进弹匣的枪弹反而在发射出去>>>详细阅读
地址:http://www.17bianji.com/lsqh/35453.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示